Prohibit cannon-cannon captures in palace
authorFabian Fichter <ianfab@users.noreply.github.com>
Tue, 7 Apr 2020 16:26:55 +0000 (18:26 +0200)
committerFabian Fichter <ianfab@users.noreply.github.com>
Tue, 7 Apr 2020 16:26:55 +0000 (18:26 +0200)
Closes #97.

src/position.h
tests/perft.sh

index ad3879f..e340b5d 100644 (file)
@@ -865,6 +865,7 @@ inline Bitboard Position::attacks_from(Color c, PieceType pt, Square s) const {
           // TODO: fix for longer diagonals
           b |=   attacks_bb(c, ALFIL, s, pieces())
               & ~attacks_bb(c, ELEPHANT, s, pieces() ^ pieces(pt))
+              & ~pieces(pt)
               & diagonal_lines();
   }
   return b & board_bb(c, pt);
@@ -892,6 +893,7 @@ inline Bitboard Position::moves_from(Color c, PieceType pt, Square s) const {
           // TODO: fix for longer diagonals
           b |=   attacks_bb(c, ALFIL, s, pieces())
               & ~attacks_bb(c, ELEPHANT, s, pieces() ^ pieces(pt))
+              & ~pieces(pt)
               & diagonal_lines();
   }
   return b & board_bb(c, pt);
index 7e925ee..6e292f3 100755 (executable)
@@ -77,6 +77,7 @@ if [[ $1 == "largeboard" ]]; then
   expect perft.exp xiangqi "fen 1rbaka2R/5r3/6n2/2p1p1p2/4P1bP1/PpC3Bc1/1nPR2P2/2N2AN2/1c2K1p2/2BAC4 w - - 0 1" 4 4485547 > /dev/null
   expect perft.exp janggi startpos 4 1067293 > /dev/null
   expect perft.exp janggi "fen 1n1kaabn1/cr2N4/5C1c1/p1pNp3p/9/9/P1PbP1P1P/3r1p3/4A4/R1BA1KB1R b - - 0 1" 4 76824 > /dev/null
+  expect perft.exp janggi "fen 1Pbcka3/3nNn1c1/N2CaC3/1pB6/9/9/5P3/9/4K4/9 w - - 0 23" 4 151944 > /dev/null
 fi
 
 rm perft.exp