Я пытаюсь рассчитать лучевые атаки с учетом индекса 64-битного представления Long Bitboard:
(defn se [board index]
"Produces a ray attack from the indexed bit in the south-east direction"
(reduce bit-or
(for [bit (rest (range index 0 -7))]
(bit-flip board bit))))
Атаки ладьей (прямо по вертикали или горизонтали) достаточно просты. Однако проблема с приведенным выше кодом заключается в том, что я получаю следующую возможность для диагональных атак слона:
00000000
00100000
01000000
10000001
00000010
00000100
00001000
00010000
Как мне объяснить случай, когда фигура уходит за край доски? Я использую отображение с прямым порядком байтов (A8 = 0, H1 = 63).