原文链接: rubik-cube-solver 使用js求解魔方
上一篇: ios filter 和 background 加线性渐变 移动时导致的拖尾问题[已解决]
下一篇: js 在线性能测试 函数调用和三元运算符 闭包和局部变量
npm:
https://www.npmjs.com/package/rubik-cube-solver
yarn add rubik-cube-solver
const cubeState = [
"dbbburrfb", // front
"rudrruddl", // right
"flulfbddr", // up
"llffdrubf", // down
"rludlubrf", // left
"lubfbfudl", // back
]
.join("")
.toUpperCase();
import { Cube } from 'rubik-cube-solver'
Cube.initSolver();
const cube = Cube.fromString(cubeState);
console.log(cube.solve());
// U F B R L U2 B2 U L2 F' U' F2 U2 L2 D L2 F2 U' R2 U2 L2 U'
这个网站不错
node, 浏览器用不了, 或者需要用c导出wasm来做
https://github.com/d-band/kociemba
纯js, 可以用,但是输出数据需要做些转换
https://github.com/slammayjammay/rubiks-cube-solver#readme
用的coffee, 我用插件转了一下, 可以使用ts了, 但是这个库写的实在是太抽象了, 根本没办法重写, 昨天搞到一点多也只是完成了cube的重构, solve基本上看不到希望... 基本放弃了, 就加下类型吧
https://github.com/ldez/cubejs#readme
为了记录下复原、转乱的过程或公式的步骤,会用“辛马斯特标记”(Singmaster notation)来书写(由大卫·辛马斯特发明)[14]。书写方式如下:
R(Right)、L(Left)、U(Up)、D(Down)、F(Front)、B(Back)分别代表右、左、上、下、前、后层。
若是顺时针旋转,则直接写上符号;若是逆时针旋转,则在符号后加上“'”或是“i”;若是旋转180°,则在符号后加上“2”或是“²”。
若要更加详细纪录整个过程,还会使用以下符号:
x、y、z分别代表将整个魔方做R、U、F,因为在速解魔方的时候,并不会总是将一个面朝向自己。
r、l、u、d、f、b分别代表右、左、上、下、前、后两层,代表连中间层一起转。
M(Middle)、E(Equator)、S(Side)代表旋转中间层,相当于Rr'、Uu'、Bb'[15](注意x,y,z和M,E,S对应的方向不一样)。