64ビットのロングビットボード表現のインデックスを指定して、レイアタックを計算しようとしています。
(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)を使用しています。