| 75 | } |
| 76 | |
| 77 | public void move(int m) { |
| 78 | int key = m % 3; |
| 79 | m /= 3; |
| 80 | switch (m) { |
| 81 | case 0: //U |
| 82 | swap(ct, 0, 1, 2, 3, key); |
| 83 | break; |
| 84 | case 1: //R |
| 85 | swap(ct, 16, 17, 18, 19, key); |
| 86 | break; |
| 87 | case 2: //F |
| 88 | swap(ct, 8, 9, 10, 11, key); |
| 89 | break; |
| 90 | case 3: //D |
| 91 | swap(ct, 4, 5, 6, 7, key); |
| 92 | break; |
| 93 | case 4: //L |
| 94 | swap(ct, 20, 21, 22, 23, key); |
| 95 | break; |
| 96 | case 5: //B |
| 97 | swap(ct, 12, 13, 14, 15, key); |
| 98 | break; |
| 99 | case 6: //u |
| 100 | swap(ct, 0, 1, 2, 3, key); |
| 101 | swap(ct, 8, 20, 12, 16, key); |
| 102 | swap(ct, 9, 21, 13, 17, key); |
| 103 | break; |
| 104 | case 7: //r |
| 105 | swap(ct, 16, 17, 18, 19, key); |
| 106 | swap(ct, 1, 15, 5, 9, key); |
| 107 | swap(ct, 2, 12, 6, 10, key); |
| 108 | break; |
| 109 | case 8: //f |
| 110 | swap(ct, 8, 9, 10, 11, key); |
| 111 | swap(ct, 2, 19, 4, 21, key); |
| 112 | swap(ct, 3, 16, 5, 22, key); |
| 113 | break; |
| 114 | case 9: //d |
| 115 | swap(ct, 4, 5, 6, 7, key); |
| 116 | swap(ct, 10, 18, 14, 22, key); |
| 117 | swap(ct, 11, 19, 15, 23, key); |
| 118 | break; |
| 119 | case 10://l |
| 120 | swap(ct, 20, 21, 22, 23, key); |
| 121 | swap(ct, 0, 8, 4, 14, key); |
| 122 | swap(ct, 3, 11, 7, 13, key); |
| 123 | break; |
| 124 | case 11://b |
| 125 | swap(ct, 12, 13, 14, 15, key); |
| 126 | swap(ct, 1, 20, 7, 18, key); |
| 127 | swap(ct, 0, 23, 6, 17, key); |
| 128 | break; |
| 129 | } |
| 130 | } |
| 131 | |
| 132 | public void set(int idx) { |
| 133 | Utils.idxToComb(ct, idx, 8, 24); |