微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

卢比克的立方体Thistlethwaite algotithm,检查边缘是否 进入G1

如何解决卢比克的立方体Thistlethwaite algotithm,检查边缘是否 进入G1

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

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

我遇到的问题是检查子组G1中是否包含多维数据集 据我了解,此子组中包含一个具有正确方向的边的多维数据集。 (请参阅https://www.jaapsch.net/puzzles/thistle.htm

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

我的问题是:在给定一个加扰的多维数据集的情况下,如何在代码中检入边缘是否正确定向?

解决方法

根据该文章的第1页:

进入G1

如果把它带回家很奇怪,则该边缘件是坏的 需要U和D面四分之一转的次数;否则很好

一种不同的表达方式:如果您无需使用U或D转弯就可以将边缘带回家(因此仅旋转L,F,R和B面),那么边缘是,否则为

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

enter image description here

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

如果上图中两个地方的颜色均为 (黄色或蓝色),则边缘为 good 。如果上图中的颜色不同,则边缘为

您可以很容易地看到,如果您将问题边缘的另一面(不是红色的)取出,则使用此方法将得出相同的结论。

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。