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
| module Fork
A1 = 0
B1 = 1
C1 = 2
D1 = 3
E1 = 4
F1 = 5
G1 = 6
H1 = 7
A2 = 0 + 8
B2 = 1 + 8
C2 = 2 + 8
D2 = 3 + 8
E2 = 4 + 8
F2 = 5 + 8
G2 = 6 + 8
H2 = 7 + 8
A3 = 0 + 2 * 8
B3 = 1 + 2 * 8
C3 = 2 + 2 * 8
D3 = 3 + 2 * 8
E3 = 4 + 2 * 8
F3 = 5 + 2 * 8
G3 = 6 + 2 * 8
H3 = 7 + 2 * 8
A4 = 0 + 3 * 8
B4 = 1 + 3 * 8
C4 = 2 + 3 * 8
D4 = 3 + 3 * 8
E4 = 4 + 3 * 8
F4 = 5 + 3 * 8
G4 = 6 + 3 * 8
H4 = 7 + 3 * 8
A5 = 0 + 4 * 8
B5 = 1 + 4 * 8
C5 = 2 + 4 * 8
D5 = 3 + 4 * 8
E5 = 4 + 4 * 8
F5 = 5 + 4 * 8
G5 = 6 + 4 * 8
H5 = 7 + 4 * 8
A6 = 0 + 5 * 8
B6 = 1 + 5 * 8
C6 = 2 + 5 * 8
D6 = 3 + 5 * 8
E6 = 4 + 5 * 8
F6 = 5 + 5 * 8
G6 = 6 + 5 * 8
H6 = 7 + 5 * 8
A7 = 0 + 6 * 8
B7 = 1 + 6 * 8
C7 = 2 + 6 * 8
D7 = 3 + 6 * 8
E7 = 4 + 6 * 8
F7 = 5 + 6 * 8
G7 = 6 + 6 * 8
H7 = 7 + 6 * 8
A8 = 0 + 7 * 8
B8 = 1 + 7 * 8
C8 = 2 + 7 * 8
D8 = 3 + 7 * 8
E8 = 4 + 7 * 8
F8 = 5 + 7 * 8
G8 = 6 + 7 * 8
H8 = 7 + 7 * 8
A1_BIT = 1u64 << A1
B1_BIT = 1u64 << B1
C1_BIT = 1u64 << C1
D1_BIT = 1u64 << D1
E1_BIT = 1u64 << E1
F1_BIT = 1u64 << F1
G1_BIT = 1u64 << G1
H1_BIT = 1u64 << H1
A2_BIT = 1u64 << A2
B2_BIT = 1u64 << B2
C2_BIT = 1u64 << C2
D2_BIT = 1u64 << D2
E2_BIT = 1u64 << E2
F2_BIT = 1u64 << F2
G2_BIT = 1u64 << G2
H2_BIT = 1u64 << H2
A3_BIT = 1u64 << A3
B3_BIT = 1u64 << B3
C3_BIT = 1u64 << C3
D3_BIT = 1u64 << D3
E3_BIT = 1u64 << E3
F3_BIT = 1u64 << F3
G3_BIT = 1u64 << G3
H3_BIT = 1u64 << H3
A4_BIT = 1u64 << A4
B4_BIT = 1u64 << B4
C4_BIT = 1u64 << C4
D4_BIT = 1u64 << D4
E4_BIT = 1u64 << E4
F4_BIT = 1u64 << F4
G4_BIT = 1u64 << G4
H4_BIT = 1u64 << H4
A5_BIT = 1u64 << A5
B5_BIT = 1u64 << B5
C5_BIT = 1u64 << C5
D5_BIT = 1u64 << D5
E5_BIT = 1u64 << E5
F5_BIT = 1u64 << F5
G5_BIT = 1u64 << G5
H5_BIT = 1u64 << H5
A6_BIT = 1u64 << A6
B6_BIT = 1u64 << B6
C6_BIT = 1u64 << C6
D6_BIT = 1u64 << D6
E6_BIT = 1u64 << E6
F6_BIT = 1u64 << F6
G6_BIT = 1u64 << G6
H6_BIT = 1u64 << H6
A7_BIT = 1u64 << A7
B7_BIT = 1u64 << B7
C7_BIT = 1u64 << C7
D7_BIT = 1u64 << D7
E7_BIT = 1u64 << E7
F7_BIT = 1u64 << F7
G7_BIT = 1u64 << G7
H7_BIT = 1u64 << H7
A8_BIT = 1u64 << A8
B8_BIT = 1u64 << B8
C8_BIT = 1u64 << C8
D8_BIT = 1u64 << D8
E8_BIT = 1u64 << E8
F8_BIT = 1u64 << F8
G8_BIT = 1u64 << G8
H8_BIT = 1u64 << H8
def self.square_to_text(square)
row, col = square.divmod(8)
"#{'a' + col}#{'1' + row}"
end
end
|