robiningelbrecht / twisty-puzzle-scrambler
生成、验证和分析扭转谜题的打乱
dev-master
2023-10-11 12:22 UTC
Requires
- php: ^8.1 || ^8.2
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.15
- phpstan/phpstan: ^1.10
- phpunit/phpunit: ^10.0
- robiningelbrecht/phpunit-pretty-print: ^1.2
- spatie/phpunit-snapshot-assertions: ^5.0
This package is auto-updated.
Last update: 2024-09-11 14:36:29 UTC
README
用于生成、验证和分析各种扭转谜题打乱的工具。这不是官方WCA打乱器,但足以满足日常使用。
安装
> composer require robiningelbrecht/twisty-puzzle-scrambler
用法
标准立方体
生成随机打乱
RandomScramble
工厂生成符合WCA规范(尺寸)的打乱。
// R F2 U' R' U2 F R' F2 R' U' $scramble = RandomScramble::twoByTwo(); // R2 F' R2 D2 B R2 F' L2 U2 F' R2 F' U' F2 R D2 F L R U' L' $scramble = RandomScramble::threeByThree(); // F2 L2 F' U2 L2 B2 D' R2 D' R2 U2 L2 R2 U2 R D' F2 L' D2 B' R Uw2 R' B2 Uw2... $scramble = RandomScramble::fourByFour(); // R' Fw Uw Lw2 Dw U L2 B2 R2 Lw' L F2 Dw' B2 R Rw' L2 Bw' Uw2 D' U' L' Bw D... $scramble = RandomScramble::fiveByFive(); // L D' B L2 3Fw' Fw' Uw2 U' R2 3Rw 3Uw Bw' 3Rw2 Rw' Uw2 3Uw2 3Rw' L2 Lw' D F2... $scramble = RandomScramble::sixBySix(); // 3Bw2 3Rw' 3Dw Uw' 3Bw2 3Rw2 Lw' F B' D Lw' 3Bw' D2 Uw2 3Fw U2 3Lw' 3Dw' B Fw'... $scramble = RandomScramble::sevenBySeven();
或者您可以自己生成打乱
$scramble = CubeScramble::random($scrabmleSize, Size::fromInt($cubeSize))
反转打乱
$scramble = RandomScramble::threeByThree(); $reversedScramble = $scramble->reverse();
以人类可读的表示法输出打乱
$scramble = RandomScramble::threeByThree(); print_r($scramble->forHumans());
Turn the right layer 180°
Turn the bottom layer 90° clockwise
Turn the back layer 90° counterclockwise
Turn the bottom layer 180°
Turn the left layer 90° counterclockwise
Turn the back layer 90° counterclockwise
Turn the right layer 90° counterclockwise
Turn the back layer 180°
Turn the top layer 90° clockwise
Turn the right layer 180°
...
验证和分析打乱
$scramble = CubeScramble::fromNotation( "B D R2 U F2 U' R2 U' B2 L2 U2 L2 R2 B' F2 R' U L D' U R'", Size::fromInt($cubeSize) );
此时打乱是 stringable
或 jsonSerializable
。当打乱无效时,将抛出 InvalidScramble
异常。
金字塔
// U' B' L' R' U B U R' l' b u' $scramble = RandomScramble::pyraminx(); $scramble = PyraminxScramble::random($scrabmleSize)
斜方体
// B L' R L' B' U R' B' U' $scramble = RandomScramble::skewb(); $scramble = SkewbScramble::random($scrabmleSize)
大魔方
// R++ D++ R-- D++ R++ D++ R++ D-- R++ D++ U R++ D-- R-- D-- R-- D++ R++ D-- R++ D++ U... $scramble = RandomScramble::megaminx(); $scramble = MegaminxScramble::random($scrabmleSize, $numberOfSequences)
时钟
// UR1+ DR3- DL0+ UL6+ U4- R6+ D1- L6+ ALL2+ y2 U1+ R3+ D1- L4+ ALL3- DR DL UL $scramble = RandomScramble::clock(); $scramble = CockScramble::random()
Sq1
// (4,0)/ (0,3)/ (3,0)/ (-3,0)/ (2,-1)/ (4,-3)/ (0,-3)/ (0,-2)/ (3,-1)/ (2,-1)/ (3,0)/ (-2,0)/ (3,0)/ (0,-5) $scramble = RandomScramble::sq1(); $scramble = Sq1Scramble::random($scrabmleSize)