如何计算/描述相对位置(魔方)
How to calculate / describe relative position (rubix cube)
这是一道算法题。我似乎无法找到一种方法来比较 rubix 立方体中 2 个立方体的相对位置。
我已经在程序中对所有 20 个立方体进行了编号。我正在使用他们的这个坐标系,但现在我想在相对位置对两个立方体建模,我遇到了麻烦。
例如,假设我在位置 8 和 10 看到我正在观看的两个立方体,然后我在位置 12 和 13 看到它们,那么在这两种情况下它们都在立方体的同一个面上,并且它们彼此相对,而不是相邻。相对而言,这与它们的位置表示相同。
(顺便说一句,此时我只关心 "edge cubes",那不是角落,所以:8 10 9 11 12 13 14 15 16 17 18 19 个位置)。
所以无论如何我想如果我列出与每个起始点相关的每个位置,使用相同的算法列出每个位置,那么我可以比较索引,如果它们相同,则相对位置将相同(但我错了,我可能在正确的轨道上,但并不总是有效):
08 10 18 16 12 13 14 15 09 11 19 17
09 11 19 17 13 14 15 12 10 08 16 18
10 18 16 08 14 15 12 13 11 09 17 19
11 19 17 09 15 12 13 14 08 10 18 16
12 13 14 15 11 19 17 09 16 08 10 18
13 14 15 12 08 16 18 10 17 09 11 19
14 15 12 13 09 17 19 11 18 10 08 16
15 12 13 14 10 18 16 08 19 11 09 17
16 08 10 18 19 17 09 11 13 12 15 14
17 09 11 19 16 18 10 08 14 13 12 15
18 16 08 10 17 19 11 09 15 14 13 12
19 17 09 11 18 16 08 10 12 15 14 13
考虑以下两个位置:方块 A 在药水 19 处,方块 b 在药水 16 处。它们在底层相邻。这是“19”行,它是 16 的索引:
0 1 2 3 4 5
19 17 09 11 18 16 08 10 12 15 14 13
现在将其与立方体c和d在13和9处的相对位置进行比较。C和D在右侧相邻,因此它们的相对位置应该相同。但是我的方法不能确定。
0 1 2 3 4 5 6 7 8 9
13 14 15 12 08 16 18 10 17 09 11 19
索引 6 不等于索引 9。无论如何,这是我最好的方法,我花了一整天才想出。
有没有人想到任何其他策略来计算/表达立方体上两个位置之间的相对位置?
非常感谢您的帮助和对这个主题的考虑!
这里有两个问题:
我认为你从立方体 13 计算相对位置时犯了一个错误。我得到:
0 1 2 3 4 5 6 7 8 9 10 11
13 14 15 12 17 09 11 19 08 16 18 10
这与另一个对齐,因此立方体 9 出现在位置 5。将其与第一行进行比较:
0 1 2 3 4 5 6
19 17 09 11 18 16 08 10 12 15 14 13
根据需要,立方体 16 也出现在位置 5(我认为您在问题中混淆了一些东西。当您的意思是 5 时,您提到索引 6。您将索引编号为 6,但在位置 6 处有立方体8,不是立方体 16。请再次检查)。
第二个问题是只给定一个立方体的位置,没有一个方向的参考立方体,有两种方法可以给立方体编号。由于您的立方体没有着色,您可以将立方体旋转 180 度并为参考立方体重新编号。假设 19 号立方体的相对位置是正确的,我也可以像这样为 13 号立方体的相对位置编号:
0 1 2 3 4 5 6 7 8 9 10 11
13 12 15 14 08 16 18 10 17 09 11 19
请注意,这与您的版本很接近,但索引 1 到 3 的顺序不同。我认为您看待立方体的方式不一致。
主要问题在这一段中已经很明显了:
For example, say I saw the two cubes I'm watching in position 8 and
10, then later I saw them in position 12 and 13, well in both
situations they're both on the same face of the cube, and they're both
across from each other, not adjacent. Relatively speaking, that's the
same representation of their location.
对于每个立方体,还有两个其他立方体位于同一面上且彼此相对。为了消除这种歧义,您必须考虑方向或减少相对位置的数量(例如,当前方案中的索引 1 和 3 表示相同的相对位置)。
这是一道算法题。我似乎无法找到一种方法来比较 rubix 立方体中 2 个立方体的相对位置。
我已经在程序中对所有 20 个立方体进行了编号。我正在使用他们的这个坐标系,但现在我想在相对位置对两个立方体建模,我遇到了麻烦。
例如,假设我在位置 8 和 10 看到我正在观看的两个立方体,然后我在位置 12 和 13 看到它们,那么在这两种情况下它们都在立方体的同一个面上,并且它们彼此相对,而不是相邻。相对而言,这与它们的位置表示相同。
(顺便说一句,此时我只关心 "edge cubes",那不是角落,所以:8 10 9 11 12 13 14 15 16 17 18 19 个位置)。
所以无论如何我想如果我列出与每个起始点相关的每个位置,使用相同的算法列出每个位置,那么我可以比较索引,如果它们相同,则相对位置将相同(但我错了,我可能在正确的轨道上,但并不总是有效):
08 10 18 16 12 13 14 15 09 11 19 17
09 11 19 17 13 14 15 12 10 08 16 18
10 18 16 08 14 15 12 13 11 09 17 19
11 19 17 09 15 12 13 14 08 10 18 16
12 13 14 15 11 19 17 09 16 08 10 18
13 14 15 12 08 16 18 10 17 09 11 19
14 15 12 13 09 17 19 11 18 10 08 16
15 12 13 14 10 18 16 08 19 11 09 17
16 08 10 18 19 17 09 11 13 12 15 14
17 09 11 19 16 18 10 08 14 13 12 15
18 16 08 10 17 19 11 09 15 14 13 12
19 17 09 11 18 16 08 10 12 15 14 13
考虑以下两个位置:方块 A 在药水 19 处,方块 b 在药水 16 处。它们在底层相邻。这是“19”行,它是 16 的索引:
0 1 2 3 4 5
19 17 09 11 18 16 08 10 12 15 14 13
现在将其与立方体c和d在13和9处的相对位置进行比较。C和D在右侧相邻,因此它们的相对位置应该相同。但是我的方法不能确定。
0 1 2 3 4 5 6 7 8 9
13 14 15 12 08 16 18 10 17 09 11 19
索引 6 不等于索引 9。无论如何,这是我最好的方法,我花了一整天才想出。
有没有人想到任何其他策略来计算/表达立方体上两个位置之间的相对位置?
非常感谢您的帮助和对这个主题的考虑!
这里有两个问题:
我认为你从立方体 13 计算相对位置时犯了一个错误。我得到:
0 1 2 3 4 5 6 7 8 9 10 11 13 14 15 12 17 09 11 19 08 16 18 10
这与另一个对齐,因此立方体 9 出现在位置 5。将其与第一行进行比较:
0 1 2 3 4 5 6 19 17 09 11 18 16 08 10 12 15 14 13
根据需要,立方体 16 也出现在位置 5(我认为您在问题中混淆了一些东西。当您的意思是 5 时,您提到索引 6。您将索引编号为 6,但在位置 6 处有立方体8,不是立方体 16。请再次检查)。
第二个问题是只给定一个立方体的位置,没有一个方向的参考立方体,有两种方法可以给立方体编号。由于您的立方体没有着色,您可以将立方体旋转 180 度并为参考立方体重新编号。假设 19 号立方体的相对位置是正确的,我也可以像这样为 13 号立方体的相对位置编号:
0 1 2 3 4 5 6 7 8 9 10 11 13 12 15 14 08 16 18 10 17 09 11 19
请注意,这与您的版本很接近,但索引 1 到 3 的顺序不同。我认为您看待立方体的方式不一致。
主要问题在这一段中已经很明显了:
For example, say I saw the two cubes I'm watching in position 8 and 10, then later I saw them in position 12 and 13, well in both situations they're both on the same face of the cube, and they're both across from each other, not adjacent. Relatively speaking, that's the same representation of their location.
对于每个立方体,还有两个其他立方体位于同一面上且彼此相对。为了消除这种歧义,您必须考虑方向或减少相对位置的数量(例如,当前方案中的索引 1 和 3 表示相同的相对位置)。