-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpositiontopcorner.go
122 lines (116 loc) · 3.75 KB
/
positiontopcorner.go
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
package main
func (env *Env) orangecorner() bool {
one_orange := ((env.currentCube.cube[ORANGE]>>20)&15) == ORANGE &&
((env.currentCube.cube[GREEN]>>28)&15) == GREEN &&
((env.currentCube.cube[WHITE]>>12)&15) == WHITE
two_orange := ((env.currentCube.cube[ORANGE]>>20)&15) == WHITE &&
((env.currentCube.cube[GREEN]>>28)&15) == ORANGE &&
((env.currentCube.cube[WHITE]>>12)&15) == GREEN
three_orange := ((env.currentCube.cube[ORANGE]>>20)&15) == GREEN &&
((env.currentCube.cube[GREEN]>>28)&15) == WHITE &&
((env.currentCube.cube[WHITE]>>12)&15) == ORANGE
if one_orange || two_orange || three_orange {
return true
}
return false
}
func (env *Env) greencorner() bool {
one_green := ((env.currentCube.cube[GREEN]>>20)&15) == GREEN &&
((env.currentCube.cube[RED]>>12)&15) == RED &&
((env.currentCube.cube[WHITE]>>20)&15) == WHITE
two_green := ((env.currentCube.cube[GREEN]>>20)&15) == WHITE &&
((env.currentCube.cube[RED]>>12)&15) == GREEN &&
((env.currentCube.cube[WHITE]>>20)&15) == RED
three_green := ((env.currentCube.cube[GREEN]>>20)&15) == RED &&
((env.currentCube.cube[RED]>>12)&15) == WHITE &&
((env.currentCube.cube[WHITE]>>20)&15) == GREEN
if one_green || two_green || three_green {
return true
}
return false
}
func (env *Env) redcorner() bool {
one_red := ((env.currentCube.cube[RED]>>4)&15) == RED &&
((env.currentCube.cube[BLUE]>>28)&15) == BLUE &&
((env.currentCube.cube[WHITE]>>28)&15) == WHITE
two_red := ((env.currentCube.cube[RED]>>4)&15) == WHITE &&
((env.currentCube.cube[BLUE]>>28)&15) == RED &&
((env.currentCube.cube[WHITE]>>28)&15) == BLUE
three_red := ((env.currentCube.cube[RED]>>4)&15) == BLUE &&
((env.currentCube.cube[BLUE]>>28)&15) == WHITE &&
((env.currentCube.cube[WHITE]>>28)&15) == RED
if one_red || two_red || three_red {
return true
}
return false
}
func (env *Env) bluecorner() bool {
one_blue := ((env.currentCube.cube[BLUE]>>20)&15) == BLUE &&
((env.currentCube.cube[ORANGE]>>28)&15) == ORANGE &&
((env.currentCube.cube[WHITE]>>4)&15) == WHITE
two_blue := ((env.currentCube.cube[BLUE]>>20)&15) == WHITE &&
((env.currentCube.cube[ORANGE]>>28)&15) == BLUE &&
((env.currentCube.cube[WHITE]>>4)&15) == ORANGE
three_blue := ((env.currentCube.cube[BLUE]>>20)&15) == ORANGE &&
((env.currentCube.cube[ORANGE]>>28)&15) == WHITE &&
((env.currentCube.cube[WHITE]>>4)&15) == BLUE
if one_blue || two_blue || three_blue {
return true
}
return false
}
func (env *Env) positiontopcorner() {
for true {
if env.orangecorner() {
for true {
if env.orangecorner() && env.greencorner() && env.redcorner() && env.bluecorner() {
return
}
env.execFace("U R U' L' U R' U' L", ORANGE)
}
}
if env.greencorner() {
for true {
if env.orangecorner() && env.greencorner() && env.redcorner() && env.bluecorner() {
return
}
env.execFace("U R U' L' U R' U' L", GREEN)
}
}
if env.redcorner() {
for true {
if env.orangecorner() && env.greencorner() && env.redcorner() && env.bluecorner() {
return
}
env.execFace("U R U' L' U R' U' L", RED)
}
}
if env.bluecorner() {
for true {
if env.orangecorner() && env.greencorner() && env.redcorner() && env.bluecorner() {
return
}
env.execFace("U R U' L' U R' U' L", BLUE)
}
}
//for scrambled
env.execFace("U R U' L' U R' U' L", ORANGE)
}
}
func (env *Env) orientedlastcorner() {
facetop := [4]int32{ORANGE, GREEN, RED, BLUE}
righttop := [4]int32{GREEN, RED, BLUE, ORANGE}
for i := 0; i < 4; i++ {
for true {
corner := ((env.currentCube.cube[ORANGE]>>20)&15) == facetop[i] &&
((env.currentCube.cube[GREEN]>>28)&15) == righttop[i] &&
((env.currentCube.cube[WHITE]>>12)&15) == WHITE
if corner {
break
}
env.execFace("R' D' R D", ORANGE)
}
env.execFace("U", ORANGE)
}
return
}