我正在尝试实现一个魔蛇模拟,如果我有一个模型,是从字符串000000020000200000020000 24块形成的,每个字符意味着相对块的旋转角度,如果一个块旋转了,它就会旋转它旁边的所有块。
if 0 = no rotation
1 = 90
2 = 180
3 = 270如何检查不同步骤的200002000000020000200000是否形成相同的形状
我是用Java实现的。

发布于 2020-08-10 23:07:41
把你的两条蛇叫成snake1和snake2。
假设snake1和snake2形成相同的形状。想想snake1的第一个代码块。此块应与snake2中的一个块对齐,以便两个形状重合。snake1的第一个块与snake2的哪个块对齐?
这个问题给出了算法的开始。如果snake1的第一个块是蓝色的,那么一个接一个地循环遍历snake2的所有蓝色块,并假设第一个snake1块与这个snake2块对齐。与这个snake2块相比,第一个snake1块可能有两个方向;您必须遍历这两个可能的方向。
一旦选择了一块snake2和一个方向,调用(0,0,0)作为snake1的第一个块在空间中的位置,循环遍历snake1的所有块,并通过在表示3d空间中所有可能位置的数组中写入blue或black来存储它们的位置。数组中不包含块的所有单元都被标记为empty。
在第二个数组中对snake2块执行相同的操作。
当且仅当两个数组表示相同的形状时,两条蛇表示相同的形状。
PS:由于块是棱柱而不是立方体,如果数组中的一个单元表示一个立方体,那么在描述单元包含的内容时,您需要比blue/black/empty更明确一点。因此您需要执行以下任一操作:
中的半黑半蓝”
https://stackoverflow.com/questions/63342299
复制相似问题