这是一个算法问题。我似乎找不到比较rubix立方体中2个立方体的相对位置的方法。
我在程序中编号了所有20个立方体。我正在使用他们的坐标系,但现在我想在相对位置建模两个立方体,我遇到了麻烦。
例如,假设我看到我正在8号和10号位置观看的两个立方体,后来我在12号和13号位置看到它们,在两种情况下它们都在立方体的同一面上,并且它们彼此相对,而不是相邻。相对来说,这与他们所在位置的表现形式相同。
(顺便说一下,我只关注此时的“边立方体”,这不是角落,所以: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
现在将其与13和9处的立方体c和d的相对位置进行比较.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.无论如何,这是我最好的方法,需要一整天的时间来提出。
有没有人在计算/表达立方体上两个位置之间的相对位置时会想到任何其他策略?
非常感谢您的帮助,并对此话题进行了考虑!
答案 0 :(得分:1)
这里有两个问题:
我认为你在计算立方体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位(我想你在你的问题中混淆了一些东西。你的意思是你提到索引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的顺序不同。我认为你对立方体的看法并不一致。
本段已经显示出主要问题:
例如,假设我看到了我在8号和8号位置观看的两个立方体 10,后来我在12和13位看到了它们,两者都很好 情况下,他们都在立方体的同一面,他们都是 彼此相对,不相邻。相对而言,就是这样 他们所在位置的相同表示。
对于每个立方体,有两个其他立方体位于同一面并且彼此相对。要消除这种歧义,您必须考虑方向或减少相对位置的数量(例如,当前方案中的索引1和3将表示相同的相对位置)。