如何解决卢比克的立方体Thistlethwaite algotithm,检查边缘是否 进入G1
我正在尝试使用Thistlethwaite算法在C语言中构建魔方求解器。
我将一个多维数据集存储为6个uint64_t
整数(面)的数组。
每个面孔都将8种颜色存储为一个字节。
这种结构让我可以使用位操作轻松旋转人脸,但是我想知道是否应该使用其他更适合Thistlethwaite算法的东西。
我遇到的问题是检查子组G1中是否包含多维数据集
页面末尾的论文清楚地表明了如何检查边缘是否良好,但是我找不到实现它的方法。
我的问题是:在给定一个加扰的多维数据集的情况下,如何在代码中检入边缘是否正确定向?
解决方法
根据该文章的第1页:
进入G1
如果把它带回家很奇怪,则该边缘件是坏的 需要U和D面四分之一转的次数;否则很好
一种不同的表达方式:如果您无需使用U或D转弯就可以将边缘带回家(因此仅旋转L,F,R和B面),那么边缘是好,否则为坏。
因此,假设您有一个乱七八糟的立方体,并且正在查看一个特定的边缘块。确定应该结束的位置(显然基于中心部分)。假设此边缘的两种颜色之一是红色。然后在下图中确定该红脸的当前位置:
对红色应结束的地方做同样的事情。
如果上图中两个地方的颜色均为 (黄色或蓝色),则边缘为 good 。如果上图中的颜色不同,则边缘为坏。
您可以很容易地看到,如果您将问题边缘的另一面(不是红色的)取出,则使用此方法将得出相同的结论。
由您决定将其转换为数据结构。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。