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
| module Fork
extend self
def lsb(num : UInt64)
num.trailing_zeros_count
end
def print_bitboard(board : UInt64)
str = ""
7.downto(0) do |row|
0.upto(7) do |col|
bit = 1_u64 << ((row * 8) + col)
str += bit & board == 0 ? '.' : "x"
end
str += "\n"
end
puts str
end
def iterate_bitboard(bitboard : UInt64, &)
while bitboard != 0
position = lsb(bitboard)
bit = (1u64 << position)
yield position, bit
bitboard ^= bit
end
end
def pop_bit(bitboard : UInt64, index)
bitboard & (~(1u64 << index))
end
def set_bit(bitboard : UInt64, index)
bitboard | (1u64 << index)
end
end
|