3个版本
0.1.2 | 2024年4月24日 |
---|---|
0.1.1 | 2024年2月26日 |
0.1.0 | 2024年2月22日 |
#1287 in 算法
39 个月下载量
在 three-style 中使用
59KB
1.5K SLoC
three-style
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