-
Notifications
You must be signed in to change notification settings - Fork 0
/
test_cube666_moves.cpp
176 lines (151 loc) · 5.31 KB
/
test_cube666_moves.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
#include <iostream>
#include "_cube666.h"
int main() {
Permutation<6> cube;
orient_z(cube);
orient_z(cube);
cube.disp_cube_fancy(std::cout);
std::cout << "---\n";
std::cout << "\tCU = middle block U towards F\n";
std::cout << "\tCU' = middle block U towards B\n";
std::cout << "\tCU U CU' U CU U |xx| CU' U CU U CU' U |U^2|\n";
std::cout << "---\n";
cube = cube
* ML1_6 * ML2_6 * !MR2_6 * !MR1_6 * U_6
* !ML1_6 * !ML2_6 * MR2_6 * MR1_6 * U_6
* ML1_6 * ML2_6 * !MR2_6 * !MR1_6 * U_6
* !ML1_6 * !ML2_6 * MR2_6 * MR1_6 * U_6
* ML1_6 * ML2_6 * !MR2_6 * !MR1_6 * U_6
* !ML1_6 * !ML2_6 * MR2_6 * MR1_6 * U_6
* U_6 * U_6
;
cube.disp_cube_fancy(std::cout);
std::cout << "-----------------------------------------------------\n";
cube = I_6;
orient_z(cube);
orient_z(cube);
cube.disp_cube_fancy(std::cout);
std::cout << "---\n";
std::cout << "\tCU = middle block U towards F\n";
std::cout << "\tCU' = middle block U towards B\n";
std::cout << "\tCU U CU' U CU U |U| CU' U CU U CU' U |U|\n";
std::cout << "---\n";
cube = cube
* ML1_6 * ML2_6 * !MR2_6 * !MR1_6 * U_6
* !ML1_6 * !ML2_6 * MR2_6 * MR1_6 * U_6
* ML1_6 * ML2_6 * !MR2_6 * !MR1_6 * U_6
* U_6
* !ML1_6 * !ML2_6 * MR2_6 * MR1_6 * U_6
* ML1_6 * ML2_6 * !MR2_6 * !MR1_6 * U_6
* !ML1_6 * !ML2_6 * MR2_6 * MR1_6 * U_6
* U_6
;
cube.disp_cube_fancy(std::cout);
std::cout << "-----------------------------------------------------\n";
cube = I_6;
orient_z(cube);
orient_z(cube);
cube.disp_cube_fancy(std::cout);
std::cout << "---\n";
std::cout << "\tCU = middle block U towards F\n";
std::cout << "\tCU' = middle block U towards B\n";
std::cout << "\tCU U CU' U CU U |U^2| CU' U CU U CU' U |xx|\n";
std::cout << "---\n";
cube = cube
* ML1_6 * ML2_6 * !MR2_6 * !MR1_6 * U_6
* !ML1_6 * !ML2_6 * MR2_6 * MR1_6 * U_6
* ML1_6 * ML2_6 * !MR2_6 * !MR1_6 * U_6
* U_6 * U_6
* !ML1_6 * !ML2_6 * MR2_6 * MR1_6 * U_6
* ML1_6 * ML2_6 * !MR2_6 * !MR1_6 * U_6
* !ML1_6 * !ML2_6 * MR2_6 * MR1_6 * U_6
;
cube.disp_cube_fancy(std::cout);
std::cout << "-----------------------------------------------------\n";
cube = I_6;
std::cout << "---\n";
std::cout << "\tMR1 U' MR2 U MR1' U' MR2' U\n";
std::cout << "---\n";
// 23 -> 82 -> 95
cube = cube * MR1_6 * U_6 * U_6 * U_6 * MR2_6 * U_6 * MR1_6 * MR1_6 * MR1_6 * U_6 * U_6 * U_6 * MR2_6 * MR2_6 * MR2_6 * U_6;
cube.disp_perm_reduced(std::cout);
std::cout << "---\n";
cube.disp_cube_fancy(std::cout);
std::cout << "-----------------------------------------------------\n";
cube = I_6;
// 10 -> 86 -> 82
std::cout << "---\n";
std::cout << "\tMR2 U' ML1' U MR2' U' ML1 U\n";
std::cout << "---\n";
cube = cube * MR2_6 * U_6 * U_6 * U_6 * ML1_6 * ML1_6 * ML1_6 * U_6 * MR2_6 * MR2_6 * MR2_6 * U_6 * U_6 * U_6 * ML1_6 * U_6;
cube.disp_perm_reduced(std::cout);
std::cout << "---\n";
cube.disp_cube_fancy(std::cout);
std::cout << "-----------------------------------------------------\n";
cube = I_6;
std::cout << "---\n";
std::cout << "\tMR2 U' ML2' U MR2' U' ML2 U\n";
std::cout << "---\n";
cube = cube * MR2_6 * U_6 * U_6 * U_6 * ML2_6 * ML2_6 * ML2_6 * U_6 * MR2_6 * MR2_6 * MR2_6 * U_6 * U_6 * U_6 * ML2_6 * U_6;
cube.disp_perm_reduced(std::cout);
std::cout << "---\n";
cube.disp_cube_fancy(std::cout);
std::cout << "-----------------------------------------------------\n";
cube = I_6;
std::cout << "---\n";
std::cout << "\tMR1 U' ML2' U MR1' U' ML2 U\n";
std::cout << "---\n";
cube = cube * MR1_6 * U_6 * U_6 * U_6 * ML2_6 * ML2_6 * ML2_6 * U_6 * MR1_6 * MR1_6 * MR1_6 * U_6 * U_6 * U_6 * ML2_6 * U_6;
cube.disp_perm_reduced(std::cout);
std::cout << "---\n";
cube.disp_cube_fancy(std::cout);
std::cout << "-----------------------------------------------------\n";
// Thm 16
Permutation<6> outcube;
std::cout << "---\n";
std::cout << "\tcommutator [a,b] = a b a' b'\n";
std::cout << "\t(thm16 move1) m16_1 = [[MF1,MD1],U']\n";
std::cout << "---\n";
outcube = MF1_6 * MD1_6 * !MF1_6 * !MD1_6 * !U_6 * MD1_6 * MF1_6 * !MD1_6 * !MF1_6 * U_6;
outcube.disp_perm_reduced(std::cout);
std::cout << "\t---\n";
outcube.disp_cube_fancy(std::cout);
std::cout << "---\n";
std::cout << "\tm16_1^2\n";
std::cout << "---\n";
cube = outcube * outcube;
cube.disp_perm_reduced(std::cout);
std::cout << "\t---\n";
cube.disp_cube_fancy(std::cout);
std::cout << "\t---\n";
std::cout << "\tm16_1^3\n";
std::cout << "\t---\n";
cube = cube * outcube;
cube.disp_perm_reduced(std::cout);
std::cout << "\t---\n";
cube.disp_cube_fancy(std::cout);
std::cout << "-----------------------------------------------------\n";
std::cout << "---\n";
std::cout << "\t(thm16 move2) m16_2 = [[MF2,MD2],U']\n";
std::cout << "---\n";
outcube = MF2_6 * MD2_6 * !MF2_6 * !MD2_6 * !U_6 * MD2_6 * MF2_6 * !MD2_6 * !MF2_6 * U_6;
outcube.disp_perm_reduced(std::cout);
std::cout << "\t---\n";
outcube.disp_cube_fancy(std::cout);
std::cout << "---\n";
std::cout << "\tm16_2^2\n";
std::cout << "---\n";
cube = outcube * outcube;
cube.disp_perm_reduced(std::cout);
std::cout << "\t---\n";
cube.disp_cube_fancy(std::cout);
std::cout << "\t---\n";
std::cout << "\tm16_2^3\n";
std::cout << "\t---\n";
cube = cube * outcube;
cube.disp_perm_reduced(std::cout);
std::cout << "\t---\n";
cube.disp_cube_fancy(std::cout);
std::cout << "-----------------------------------------------------\n";
return 0;
}