Я пытаюсь вычислить лучевые атаки дали индекс 64-битный Long bitboard представления в:Ray атака на 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).
К сожалению, это не работайте по мере необходимости: https://gist.github.com/2596793 – DanS
@ DanS действительно и сейчас? – cgrand
Да, сейчас работает. Осталось только то, что мне нужно учитывать индекс 0-7 или 63. Выбрасывает эту ошибку: ArityException Неверное количество аргументов (0), переданных в: core $ bit- или clojure.lang.AFn.throwArity. Необходимо поймать это исключение и вернуть пустую доску. – DanS