3个版本

0.1.2 2024年4月24日
0.1.1 2024年2月26日
0.1.0 2024年2月22日

#1287 in 算法

39 个月下载量
three-style 中使用

MIT 许可证

59KB
1.5K SLoC

three-style

Build/test crates.io

three-style 是一个程序,用于搜索3x3 commutators,这些commutators用于3-style,这是一种通过一次交换三个部件来盲解魔方的先进方法,不会影响魔方的其余部分。

内容

安装

您可以通过从 发布 下载您系统上的预构建二进制文件或使用 cargo 安装来使用 three-style。

cargo install three-style

用法

three-style 使用层来描述部件或更确切地说是贴纸目标。示例: UF (边),UBL (角)。目前,它只公开了一个主要命令 search,并按以下方式使用

# corners
three-style search --gen RUD --corners UFR UBL RFD --depth 4

# edges
three-style search --gen RUE --edges UF UB LF --depth 5

# shorter versions
three-style search -g RUD -c UFR UBL RFD -d 4
three-style search -g RUE -e UF UB LF -d 5

[!NOTE] 深度与commutator的表示形式长度相关。

概念

commutator 是一种形式的算法:A B A' B',它允许我们一次交换三个部件而不影响魔方的其余部分。它通常用以下符号描述:[A, B]

它由两个基本可交换的部分组成

  • 交换 是一个单独的移动,它交换两个部件而不影响第三个部件
  • 插入 是三个移动,它将第三个部件插入到两个部件中的一个位置中,而不影响另一个部件。

但并非所有情况都可以使用纯commutator来解决,有些情况需要使用设置移动。一个 设置移动 是一系列移动,它将情况转换为可以使用纯commutator解决的问题。使用设置移动的commutator形式为 S A B A' B' S',并且更常见地写作 [S: [A, B]]

[!NOTE] 边缘有一个特殊的情况称为 4 mover,它不使用正常的3次插入。例如:[M', U2]

以下是查找任何commutator的步骤

           *------------------*
           | Choose a moveset |
           *------------------*
                    |
                    v
          *--------------------*  no   *------------------*
          | Interchange exists | ----> | Find setup moves |
          *--------------------* <---- *------------------*
                    | yes                        ^
                    v                            |
           *------------------*        no        |
           | Insertion exists | ------------------
           *------------------*
                    | yes
                    v
    *--------------------------------*
    | Interchange or insertion first |
    *--------------------------------*
                    |
                    v
                *------*
                | Done |
                *------*

程序基本上执行迭代DFS,并按照以下步骤查找换位操作符。交换和插入的规则用于剪枝,搜索速度相当快。

参考

贡献

欢迎提交错误报告、拉取请求和功能请求!

依赖项

~270–730KB
~17K SLoC