0

我正在尝试使用 Thistlethwaite 算法在 C 中构建一个魔方求解器。

我将一个多维数据集存储为 6 个uint64_t整数(面)的数组。
每个面都将 8 种颜色存储为一个字节。
这种结构让我可以使用位操作轻松旋转面部,但我想知道是否应该使用更适合 Thistlethwaite 算法的其他东西。

我遇到的问题是检查子组 G1 <L, R, F, B, U2,D2> 中是否包含多维数据集据我了解,该子组中包含具有正确定向边缘的多维数据集。(见https://www.jaapsch.net/puzzles/thistle.htm

页面末尾的论文清楚地说明了如何检查边缘是否良好,但我找不到实现它的方法。

我的问题是:如果给定一个加扰的立方体,边缘的方向是否正确,如何检查代码?

4

1 回答 1

0

根据文章,第1页:

进入G1

如果在带回家时需要奇数个四分之一圈的 U 面和 D 面,则边缘片是坏的;否则很好

换一种说法:如果你能设法在不使用 U 或 D 转弯的情况下将边缘带回家(所以只转动 L、F、R 和 B 面),那么边缘是好的,否则是坏的

因此,假设您有一个打乱的立方体,并且正在查看一个特定的边缘部分。确定它应该结束的位置(显然基于中心部分)。假设这条边的两种颜色之一是红色。然后在下图中确定那个红脸的当前位置在哪里:

在此处输入图像描述

对红色面应该结束的地方做同样的事情。

如果上图中两个地方的颜色相同(黄色或蓝色),则边缘良好。如果上图中它们的颜色不同,则边缘不好

您可以很容易地看到,如果您采用了有问题的边缘的另一侧颜色(非红色一侧),您将使用此方法得出相同的结论。

由您将其转换为您的数据结构。

于 2020-08-28T20:01:32.863 回答