diff --git a/testdata/castling.json b/testdata/castling.json new file mode 100644 index 0000000..1c6a351 --- /dev/null +++ b/testdata/castling.json @@ -0,0 +1,5194 @@ +{ + "description": "Test cases involving castling.", + "testCases": [ + { + "start": { + "fen": "8/4k3/8/8/8/8/r6r/R3K2R w KQ - 0 1", + "description": "White can castle normally in either direction." + }, + "expected": [ + { + "move": "Rb1", + "fen": "8/4k3/8/8/8/8/r6r/1R2K2R b K - 1 1" + }, + { + "move": "Rc1", + "fen": "8/4k3/8/8/8/8/r6r/2R1K2R b K - 1 1" + }, + { + "move": "Rd1", + "fen": "8/4k3/8/8/8/8/r6r/3RK2R b K - 1 1" + }, + { + "move": "Rxa2", + "fen": "8/4k3/8/8/8/8/R6r/4K2R b K - 0 1" + }, + { + "move": "Kd1", + "fen": "8/4k3/8/8/8/8/r6r/R2K3R b - - 1 1" + }, + { + "move": "Kf1", + "fen": "8/4k3/8/8/8/8/r6r/R4K1R b - - 1 1" + }, + { + "move": "O-O-O", + "fen": "8/4k3/8/8/8/8/r6r/2KR3R b - - 1 1" + }, + { + "move": "O-O", + "fen": "8/4k3/8/8/8/8/r6r/R4RK1 b - - 1 1" + }, + { + "move": "Rg1", + "fen": "8/4k3/8/8/8/8/r6r/R3K1R1 b Q - 1 1" + }, + { + "move": "Rf1", + "fen": "8/4k3/8/8/8/8/r6r/R3KR2 b Q - 1 1" + }, + { + "move": "Rxh2", + "fen": "8/4k3/8/8/8/8/r6R/R3K3 b Q - 0 1" + } + ] + }, + { + "description": "Transpose of 8/4k3/8/8/8/8/r6r/R3K2R w KQ - 0 1", + "start": { + "fen": "r3k2r/R6R/8/8/8/8/4K3/8 b kq - 0 1", + "description": "Black can castle normally in either direction." + }, + "expected": [ + { + "move": "Rxa7", + "fen": "4k2r/r6R/8/8/8/8/4K3/8 w k - 0 2" + }, + { + "move": "Rb8", + "fen": "1r2k2r/R6R/8/8/8/8/4K3/8 w k - 1 2" + }, + { + "move": "Rc8", + "fen": "2r1k2r/R6R/8/8/8/8/4K3/8 w k - 1 2" + }, + { + "move": "Rd8", + "fen": "3rk2r/R6R/8/8/8/8/4K3/8 w k - 1 2" + }, + { + "move": "Kd8", + "fen": "r2k3r/R6R/8/8/8/8/4K3/8 w - - 1 2" + }, + { + "move": "Kf8", + "fen": "r4k1r/R6R/8/8/8/8/4K3/8 w - - 1 2" + }, + { + "move": "O-O-O", + "fen": "2kr3r/R6R/8/8/8/8/4K3/8 w - - 1 2" + }, + { + "move": "O-O", + "fen": "r4rk1/R6R/8/8/8/8/4K3/8 w - - 1 2" + }, + { + "move": "Rxh7", + "fen": "r3k3/R6r/8/8/8/8/4K3/8 w q - 0 2" + }, + { + "move": "Rg8", + "fen": "r3k1r1/R6R/8/8/8/8/4K3/8 w q - 1 2" + }, + { + "move": "Rf8", + "fen": "r3kr2/R6R/8/8/8/8/4K3/8 w q - 1 2" + } + ] + }, + { + "start": { + "fen": "8/4k3/8/8/8/8/r6r/R3K2R w Q - 0 1", + "description": "White can only castle queenside." + }, + "expected": [ + { + "move": "Rb1", + "fen": "8/4k3/8/8/8/8/r6r/1R2K2R b - - 1 1" + }, + { + "move": "Rc1", + "fen": "8/4k3/8/8/8/8/r6r/2R1K2R b - - 1 1" + }, + { + "move": "Rd1", + "fen": "8/4k3/8/8/8/8/r6r/3RK2R b - - 1 1" + }, + { + "move": "Rxa2", + "fen": "8/4k3/8/8/8/8/R6r/4K2R b - - 0 1" + }, + { + "move": "Kd1", + "fen": "8/4k3/8/8/8/8/r6r/R2K3R b - - 1 1" + }, + { + "move": "Kf1", + "fen": "8/4k3/8/8/8/8/r6r/R4K1R b - - 1 1" + }, + { + "move": "O-O-O", + "fen": "8/4k3/8/8/8/8/r6r/2KR3R b - - 1 1" + }, + { + "move": "Rg1", + "fen": "8/4k3/8/8/8/8/r6r/R3K1R1 b Q - 1 1" + }, + { + "move": "Rf1", + "fen": "8/4k3/8/8/8/8/r6r/R3KR2 b Q - 1 1" + }, + { + "move": "Rxh2", + "fen": "8/4k3/8/8/8/8/r6R/R3K3 b Q - 0 1" + } + ] + }, + { + "description": "Transpose of 8/4k3/8/8/8/8/r6r/R3K2R w Q - 0 1", + "start": { + "fen": "r3k2r/R6R/8/8/8/8/4K3/8 b q - 0 1", + "description": "Black can only castle queenside." + }, + "expected": [ + { + "move": "Rxa7", + "fen": "4k2r/r6R/8/8/8/8/4K3/8 w - - 0 2" + }, + { + "move": "Rb8", + "fen": "1r2k2r/R6R/8/8/8/8/4K3/8 w - - 1 2" + }, + { + "move": "Rc8", + "fen": "2r1k2r/R6R/8/8/8/8/4K3/8 w - - 1 2" + }, + { + "move": "Rd8", + "fen": "3rk2r/R6R/8/8/8/8/4K3/8 w - - 1 2" + }, + { + "move": "Kd8", + "fen": "r2k3r/R6R/8/8/8/8/4K3/8 w - - 1 2" + }, + { + "move": "Kf8", + "fen": "r4k1r/R6R/8/8/8/8/4K3/8 w - - 1 2" + }, + { + "move": "O-O-O", + "fen": "2kr3r/R6R/8/8/8/8/4K3/8 w - - 1 2" + }, + { + "move": "Rxh7", + "fen": "r3k3/R6r/8/8/8/8/4K3/8 w q - 0 2" + }, + { + "move": "Rg8", + "fen": "r3k1r1/R6R/8/8/8/8/4K3/8 w q - 1 2" + }, + { + "move": "Rf8", + "fen": "r3kr2/R6R/8/8/8/8/4K3/8 w q - 1 2" + } + ] + }, + { + "start": { + "fen": "8/4k3/8/8/8/8/r6r/R3K2R w K - 0 1", + "description": "White can only castle kingside." + }, + "expected": [ + { + "move": "Rb1", + "fen": "8/4k3/8/8/8/8/r6r/1R2K2R b K - 1 1" + }, + { + "move": "Rc1", + "fen": "8/4k3/8/8/8/8/r6r/2R1K2R b K - 1 1" + }, + { + "move": "Rd1", + "fen": "8/4k3/8/8/8/8/r6r/3RK2R b K - 1 1" + }, + { + "move": "Rxa2", + "fen": "8/4k3/8/8/8/8/R6r/4K2R b K - 0 1" + }, + { + "move": "Kd1", + "fen": "8/4k3/8/8/8/8/r6r/R2K3R b - - 1 1" + }, + { + "move": "Kf1", + "fen": "8/4k3/8/8/8/8/r6r/R4K1R b - - 1 1" + }, + { + "move": "O-O", + "fen": "8/4k3/8/8/8/8/r6r/R4RK1 b - - 1 1" + }, + { + "move": "Rg1", + "fen": "8/4k3/8/8/8/8/r6r/R3K1R1 b - - 1 1" + }, + { + "move": "Rf1", + "fen": "8/4k3/8/8/8/8/r6r/R3KR2 b - - 1 1" + }, + { + "move": "Rxh2", + "fen": "8/4k3/8/8/8/8/r6R/R3K3 b - - 0 1" + } + ] + }, + { + "description": "Transpose of 8/4k3/8/8/8/8/r6r/R3K2R w K - 0 1", + "start": { + "fen": "r3k2r/R6R/8/8/8/8/4K3/8 b k - 0 1", + "description": "Black can only castle kingside." + }, + "expected": [ + { + "move": "Rxa7", + "fen": "4k2r/r6R/8/8/8/8/4K3/8 w k - 0 2" + }, + { + "move": "Rb8", + "fen": "1r2k2r/R6R/8/8/8/8/4K3/8 w k - 1 2" + }, + { + "move": "Rc8", + "fen": "2r1k2r/R6R/8/8/8/8/4K3/8 w k - 1 2" + }, + { + "move": "Rd8", + "fen": "3rk2r/R6R/8/8/8/8/4K3/8 w k - 1 2" + }, + { + "move": "Kd8", + "fen": "r2k3r/R6R/8/8/8/8/4K3/8 w - - 1 2" + }, + { + "move": "Kf8", + "fen": "r4k1r/R6R/8/8/8/8/4K3/8 w - - 1 2" + }, + { + "move": "O-O", + "fen": "r4rk1/R6R/8/8/8/8/4K3/8 w - - 1 2" + }, + { + "move": "Rxh7", + "fen": "r3k3/R6r/8/8/8/8/4K3/8 w - - 0 2" + }, + { + "move": "Rg8", + "fen": "r3k1r1/R6R/8/8/8/8/4K3/8 w - - 1 2" + }, + { + "move": "Rf8", + "fen": "r3kr2/R6R/8/8/8/8/4K3/8 w - - 1 2" + } + ] + }, + { + "start": { + "fen": "8/4k3/8/8/8/8/r6r/R3K2R w - - 0 1", + "description": "White can't castle despite pieces being in the right position; presumably they've already moved the king or rooks." + }, + "expected": [ + { + "move": "Rb1", + "fen": "8/4k3/8/8/8/8/r6r/1R2K2R b - - 1 1" + }, + { + "move": "Rc1", + "fen": "8/4k3/8/8/8/8/r6r/2R1K2R b - - 1 1" + }, + { + "move": "Rd1", + "fen": "8/4k3/8/8/8/8/r6r/3RK2R b - - 1 1" + }, + { + "move": "Rxa2", + "fen": "8/4k3/8/8/8/8/R6r/4K2R b - - 0 1" + }, + { + "move": "Kd1", + "fen": "8/4k3/8/8/8/8/r6r/R2K3R b - - 1 1" + }, + { + "move": "Kf1", + "fen": "8/4k3/8/8/8/8/r6r/R4K1R b - - 1 1" + }, + { + "move": "Rg1", + "fen": "8/4k3/8/8/8/8/r6r/R3K1R1 b - - 1 1" + }, + { + "move": "Rf1", + "fen": "8/4k3/8/8/8/8/r6r/R3KR2 b - - 1 1" + }, + { + "move": "Rxh2", + "fen": "8/4k3/8/8/8/8/r6R/R3K3 b - - 0 1" + } + ] + }, + { + "description": "Transpose of 8/4k3/8/8/8/8/r6r/R3K2R w - - 0 1", + "start": { + "fen": "r3k2r/R6R/8/8/8/8/4K3/8 b - - 0 1", + "description": "Black can't castle despite pieces being in the right position; presumably they've already moved the king or rooks." + }, + "expected": [ + { + "move": "Rxa7", + "fen": "4k2r/r6R/8/8/8/8/4K3/8 w - - 0 2" + }, + { + "move": "Rb8", + "fen": "1r2k2r/R6R/8/8/8/8/4K3/8 w - - 1 2" + }, + { + "move": "Rc8", + "fen": "2r1k2r/R6R/8/8/8/8/4K3/8 w - - 1 2" + }, + { + "move": "Rd8", + "fen": "3rk2r/R6R/8/8/8/8/4K3/8 w - - 1 2" + }, + { + "move": "Kd8", + "fen": "r2k3r/R6R/8/8/8/8/4K3/8 w - - 1 2" + }, + { + "move": "Kf8", + "fen": "r4k1r/R6R/8/8/8/8/4K3/8 w - - 1 2" + }, + { + "move": "Rxh7", + "fen": "r3k3/R6r/8/8/8/8/4K3/8 w - - 0 2" + }, + { + "move": "Rg8", + "fen": "r3k1r1/R6R/8/8/8/8/4K3/8 w - - 1 2" + }, + { + "move": "Rf8", + "fen": "r3kr2/R6R/8/8/8/8/4K3/8 w - - 1 2" + } + ] + }, + { + "start": { + "fen": "1r6/4k3/8/8/8/8/r7/R3K3 w Q - 0 1", + "description": "White can castle queenside despite b1 being attacked." + }, + "expected": [ + { + "move": "Rb1", + "fen": "1r6/4k3/8/8/8/8/r7/1R2K3 b - - 1 1" + }, + { + "move": "Rc1", + "fen": "1r6/4k3/8/8/8/8/r7/2R1K3 b - - 1 1" + }, + { + "move": "Rd1", + "fen": "1r6/4k3/8/8/8/8/r7/3RK3 b - - 1 1" + }, + { + "move": "Rxa2", + "fen": "1r6/4k3/8/8/8/8/R7/4K3 b - - 0 1" + }, + { + "move": "Kd1", + "fen": "1r6/4k3/8/8/8/8/r7/R2K4 b - - 1 1" + }, + { + "move": "Kf1", + "fen": "1r6/4k3/8/8/8/8/r7/R4K2 b - - 1 1" + }, + { + "move": "O-O-O", + "fen": "1r6/4k3/8/8/8/8/r7/2KR4 b - - 1 1" + } + ] + }, + { + "description": "Transpose of 1r6/4k3/8/8/8/8/r7/R3K3 w Q - 0 1", + "start": { + "fen": "r3k3/R7/8/8/8/8/4K3/1R6 b q - 0 1", + "description": "Black can castle queenside despite b1 being attacked." + }, + "expected": [ + { + "move": "Rxa7", + "fen": "4k3/r7/8/8/8/8/4K3/1R6 w - - 0 2" + }, + { + "move": "Rb8", + "fen": "1r2k3/R7/8/8/8/8/4K3/1R6 w - - 1 2" + }, + { + "move": "Rc8", + "fen": "2r1k3/R7/8/8/8/8/4K3/1R6 w - - 1 2" + }, + { + "move": "Rd8", + "fen": "3rk3/R7/8/8/8/8/4K3/1R6 w - - 1 2" + }, + { + "move": "Kd8", + "fen": "r2k4/R7/8/8/8/8/4K3/1R6 w - - 1 2" + }, + { + "move": "Kf8", + "fen": "r4k2/R7/8/8/8/8/4K3/1R6 w - - 1 2" + }, + { + "move": "O-O-O", + "fen": "2kr4/R7/8/8/8/8/4K3/1R6 w - - 1 2" + } + ] + }, + { + "start": { + "fen": "2r5/4k3/8/8/8/8/r7/R3K3 w Q - 0 1", + "description": "White can't castle queenside because it would into check from a rook." + }, + "expected": [ + { + "move": "Rb1", + "fen": "2r5/4k3/8/8/8/8/r7/1R2K3 b - - 1 1" + }, + { + "move": "Rc1", + "fen": "2r5/4k3/8/8/8/8/r7/2R1K3 b - - 1 1" + }, + { + "move": "Rd1", + "fen": "2r5/4k3/8/8/8/8/r7/3RK3 b - - 1 1" + }, + { + "move": "Rxa2", + "fen": "2r5/4k3/8/8/8/8/R7/4K3 b - - 0 1" + }, + { + "move": "Kd1", + "fen": "2r5/4k3/8/8/8/8/r7/R2K4 b - - 1 1" + }, + { + "move": "Kf1", + "fen": "2r5/4k3/8/8/8/8/r7/R4K2 b - - 1 1" + } + ] + }, + { + "description": "Transpose of 2r5/4k3/8/8/8/8/r7/R3K3 w Q - 0 1", + "start": { + "fen": "r3k3/R7/8/8/8/8/4K3/2R5 b q - 0 1", + "description": "Black can't castle queenside because it would into check from a rook." + }, + "expected": [ + { + "move": "Rxa7", + "fen": "4k3/r7/8/8/8/8/4K3/2R5 w - - 0 2" + }, + { + "move": "Rb8", + "fen": "1r2k3/R7/8/8/8/8/4K3/2R5 w - - 1 2" + }, + { + "move": "Rc8", + "fen": "2r1k3/R7/8/8/8/8/4K3/2R5 w - - 1 2" + }, + { + "move": "Rd8", + "fen": "3rk3/R7/8/8/8/8/4K3/2R5 w - - 1 2" + }, + { + "move": "Kd8", + "fen": "r2k4/R7/8/8/8/8/4K3/2R5 w - - 1 2" + }, + { + "move": "Kf8", + "fen": "r4k2/R7/8/8/8/8/4K3/2R5 w - - 1 2" + } + ] + }, + { + "start": { + "fen": "8/4k3/8/8/8/b7/r7/R3K3 w Q - 0 1", + "description": "White can't castle queenside because it would be into check from a bishop." + }, + "expected": [ + { + "move": "Rb1", + "fen": "8/4k3/8/8/8/b7/r7/1R2K3 b - - 1 1" + }, + { + "move": "Rc1", + "fen": "8/4k3/8/8/8/b7/r7/2R1K3 b - - 1 1" + }, + { + "move": "Rd1", + "fen": "8/4k3/8/8/8/b7/r7/3RK3 b - - 1 1" + }, + { + "move": "Rxa2", + "fen": "8/4k3/8/8/8/b7/R7/4K3 b - - 0 1" + }, + { + "move": "Kd1", + "fen": "8/4k3/8/8/8/b7/r7/R2K4 b - - 1 1" + }, + { + "move": "Kf1", + "fen": "8/4k3/8/8/8/b7/r7/R4K2 b - - 1 1" + } + ] + }, + { + "description": "Transpose of 8/4k3/8/8/8/b7/r7/R3K3 w Q - 0 1", + "start": { + "fen": "r3k3/R7/B7/8/8/8/4K3/8 b q - 0 1", + "description": "Black can't castle queenside because it would be into check from a bishop." + }, + "expected": [ + { + "move": "Rxa7", + "fen": "4k3/r7/B7/8/8/8/4K3/8 w - - 0 2" + }, + { + "move": "Rb8", + "fen": "1r2k3/R7/B7/8/8/8/4K3/8 w - - 1 2" + }, + { + "move": "Rc8", + "fen": "2r1k3/R7/B7/8/8/8/4K3/8 w - - 1 2" + }, + { + "move": "Rd8", + "fen": "3rk3/R7/B7/8/8/8/4K3/8 w - - 1 2" + }, + { + "move": "Kd8", + "fen": "r2k4/R7/B7/8/8/8/4K3/8 w - - 1 2" + }, + { + "move": "Kf8", + "fen": "r4k2/R7/B7/8/8/8/4K3/8 w - - 1 2" + } + ] + }, + { + "start": { + "fen": "8/4k3/8/8/8/8/n7/R3K3 w Q - 0 1", + "description": "White can't castle queenside because it would be into check from a knight." + }, + "expected": [ + { + "move": "Rb1", + "fen": "8/4k3/8/8/8/8/n7/1R2K3 b - - 1 1" + }, + { + "move": "Rc1", + "fen": "8/4k3/8/8/8/8/n7/2R1K3 b - - 1 1" + }, + { + "move": "Rd1", + "fen": "8/4k3/8/8/8/8/n7/3RK3 b - - 1 1" + }, + { + "move": "Rxa2", + "fen": "8/4k3/8/8/8/8/R7/4K3 b - - 0 1" + }, + { + "move": "Kd1", + "fen": "8/4k3/8/8/8/8/n7/R2K4 b - - 1 1" + }, + { + "move": "Kf1", + "fen": "8/4k3/8/8/8/8/n7/R4K2 b - - 1 1" + }, + { + "move": "Kd2", + "fen": "8/4k3/8/8/8/8/n2K4/R7 b - - 1 1" + }, + { + "move": "Ke2", + "fen": "8/4k3/8/8/8/8/n3K3/R7 b - - 1 1" + }, + { + "move": "Kf2", + "fen": "8/4k3/8/8/8/8/n4K2/R7 b - - 1 1" + } + ] + }, + { + "description": "Transpose of 8/4k3/8/8/8/8/n7/R3K3 w Q - 0 1", + "start": { + "fen": "r3k3/N7/8/8/8/8/4K3/8 b q - 0 1", + "description": "Black can't castle queenside because it would be into check from a knight." + }, + "expected": [ + { + "move": "Rxa7", + "fen": "4k3/r7/8/8/8/8/4K3/8 w - - 0 2" + }, + { + "move": "Rb8", + "fen": "1r2k3/N7/8/8/8/8/4K3/8 w - - 1 2" + }, + { + "move": "Rc8", + "fen": "2r1k3/N7/8/8/8/8/4K3/8 w - - 1 2" + }, + { + "move": "Rd8", + "fen": "3rk3/N7/8/8/8/8/4K3/8 w - - 1 2" + }, + { + "move": "Kd7", + "fen": "r7/N2k4/8/8/8/8/4K3/8 w - - 1 2" + }, + { + "move": "Ke7", + "fen": "r7/N3k3/8/8/8/8/4K3/8 w - - 1 2" + }, + { + "move": "Kf7", + "fen": "r7/N4k2/8/8/8/8/4K3/8 w - - 1 2" + }, + { + "move": "Kd8", + "fen": "r2k4/N7/8/8/8/8/4K3/8 w - - 1 2" + }, + { + "move": "Kf8", + "fen": "r4k2/N7/8/8/8/8/4K3/8 w - - 1 2" + } + ] + }, + { + "start": { + "fen": "8/4k3/8/8/5q2/8/r7/R3K3 w Q - 0 1", + "description": "White can't castle queenside because it would be into check from a queen." + }, + "expected": [ + { + "move": "Rb1", + "fen": "8/4k3/8/8/5q2/8/r7/1R2K3 b - - 1 1" + }, + { + "move": "Rc1", + "fen": "8/4k3/8/8/5q2/8/r7/2R1K3 b - - 1 1" + }, + { + "move": "Rd1", + "fen": "8/4k3/8/8/5q2/8/r7/3RK3 b - - 1 1" + }, + { + "move": "Rxa2", + "fen": "8/4k3/8/8/5q2/8/R7/4K3 b - - 0 1" + }, + { + "move": "Kd1", + "fen": "8/4k3/8/8/5q2/8/r7/R2K4 b - - 1 1" + } + ] + }, + { + "description": "Transpose of 8/4k3/8/8/5q2/8/r7/R3K3 w Q - 0 1", + "start": { + "fen": "r3k3/R7/8/5Q2/8/8/4K3/8 b q - 0 1", + "description": "Black can't castle queenside because it would be into check from a queen." + }, + "expected": [ + { + "move": "Rxa7", + "fen": "4k3/r7/8/5Q2/8/8/4K3/8 w - - 0 2" + }, + { + "move": "Rb8", + "fen": "1r2k3/R7/8/5Q2/8/8/4K3/8 w - - 1 2" + }, + { + "move": "Rc8", + "fen": "2r1k3/R7/8/5Q2/8/8/4K3/8 w - - 1 2" + }, + { + "move": "Rd8", + "fen": "3rk3/R7/8/5Q2/8/8/4K3/8 w - - 1 2" + }, + { + "move": "Kd8", + "fen": "r2k4/R7/8/5Q2/8/8/4K3/8 w - - 1 2" + } + ] + }, + { + "start": { + "fen": "8/8/8/8/8/8/rk6/R3K3 w Q - 0 1", + "description": "White can't castle queenside because it would be into check from black king." + }, + "expected": [ + { + "move": "Rb1+", + "fen": "8/8/8/8/8/8/rk6/1R2K3 b - - 1 1" + }, + { + "move": "Rc1", + "fen": "8/8/8/8/8/8/rk6/2R1K3 b - - 1 1" + }, + { + "move": "Rd1", + "fen": "8/8/8/8/8/8/rk6/3RK3 b - - 1 1" + }, + { + "move": "Rxa2+", + "fen": "8/8/8/8/8/8/Rk6/4K3 b - - 0 1" + }, + { + "move": "Kd1", + "fen": "8/8/8/8/8/8/rk6/R2K4 b - - 1 1" + }, + { + "move": "Kf1", + "fen": "8/8/8/8/8/8/rk6/R4K2 b - - 1 1" + }, + { + "move": "Kd2", + "fen": "8/8/8/8/8/8/rk1K4/R7 b - - 1 1" + }, + { + "move": "Ke2", + "fen": "8/8/8/8/8/8/rk2K3/R7 b - - 1 1" + }, + { + "move": "Kf2", + "fen": "8/8/8/8/8/8/rk3K2/R7 b - - 1 1" + } + ] + }, + { + "description": "Transpose of 8/8/8/8/8/8/rk6/R3K3 w Q - 0 1", + "start": { + "fen": "r3k3/RK6/8/8/8/8/8/8 b q - 0 1", + "description": "Black can't castle queenside because it would be into check from white king." + }, + "expected": [ + { + "move": "Rxa7+", + "fen": "4k3/rK6/8/8/8/8/8/8 w - - 0 2" + }, + { + "move": "Rb8+", + "fen": "1r2k3/RK6/8/8/8/8/8/8 w - - 1 2" + }, + { + "move": "Rc8", + "fen": "2r1k3/RK6/8/8/8/8/8/8 w - - 1 2" + }, + { + "move": "Rd8", + "fen": "3rk3/RK6/8/8/8/8/8/8 w - - 1 2" + }, + { + "move": "Kd7", + "fen": "r7/RK1k4/8/8/8/8/8/8 w - - 1 2" + }, + { + "move": "Ke7", + "fen": "r7/RK2k3/8/8/8/8/8/8 w - - 1 2" + }, + { + "move": "Kf7", + "fen": "r7/RK3k2/8/8/8/8/8/8 w - - 1 2" + }, + { + "move": "Kd8", + "fen": "r2k4/RK6/8/8/8/8/8/8 w - - 1 2" + }, + { + "move": "Kf8", + "fen": "r4k2/RK6/8/8/8/8/8/8 w - - 1 2" + } + ] + }, + { + "start": { + "fen": "8/8/8/8/3k4/8/rp6/R3K3 w Q - 0 1", + "description": "White can't castle queenside because it would be into check from a pawn." + }, + "expected": [ + { + "move": "Rb1", + "fen": "8/8/8/8/3k4/8/rp6/1R2K3 b - - 1 1" + }, + { + "move": "Rc1", + "fen": "8/8/8/8/3k4/8/rp6/2R1K3 b - - 1 1" + }, + { + "move": "Rd1+", + "fen": "8/8/8/8/3k4/8/rp6/3RK3 b - - 1 1" + }, + { + "move": "Rxa2", + "fen": "8/8/8/8/3k4/8/Rp6/4K3 b - - 0 1" + }, + { + "move": "Kd1", + "fen": "8/8/8/8/3k4/8/rp6/R2K4 b - - 1 1" + }, + { + "move": "Kf1", + "fen": "8/8/8/8/3k4/8/rp6/R4K2 b - - 1 1" + }, + { + "move": "Kd2", + "fen": "8/8/8/8/3k4/8/rp1K4/R7 b - - 1 1" + }, + { + "move": "Ke2", + "fen": "8/8/8/8/3k4/8/rp2K3/R7 b - - 1 1" + }, + { + "move": "Kf2", + "fen": "8/8/8/8/3k4/8/rp3K2/R7 b - - 1 1" + } + ] + }, + { + "description": "Transpose of 8/8/8/8/3k4/8/rp6/R3K3 w Q - 0 1", + "start": { + "fen": "r3k3/RP6/8/3K4/8/8/8/8 b q - 0 1", + "description": "Black can't castle queenside because it would be into check from a pawn." + }, + "expected": [ + { + "move": "Rxa7", + "fen": "4k3/rP6/8/3K4/8/8/8/8 w - - 0 2" + }, + { + "move": "Rb8", + "fen": "1r2k3/RP6/8/3K4/8/8/8/8 w - - 1 2" + }, + { + "move": "Rc8", + "fen": "2r1k3/RP6/8/3K4/8/8/8/8 w - - 1 2" + }, + { + "move": "Rd8+", + "fen": "3rk3/RP6/8/3K4/8/8/8/8 w - - 1 2" + }, + { + "move": "Kd7", + "fen": "r7/RP1k4/8/3K4/8/8/8/8 w - - 1 2" + }, + { + "move": "Ke7", + "fen": "r7/RP2k3/8/3K4/8/8/8/8 w - - 1 2" + }, + { + "move": "Kf7", + "fen": "r7/RP3k2/8/3K4/8/8/8/8 w - - 1 2" + }, + { + "move": "Kd8", + "fen": "r2k4/RP6/8/3K4/8/8/8/8 w - - 1 2" + }, + { + "move": "Kf8", + "fen": "r4k2/RP6/8/3K4/8/8/8/8 w - - 1 2" + } + ] + }, + { + "start": { + "fen": "8/8/8/4r3/3k4/8/8/R3K2R w Q - 0 1", + "description": "White can't castle either direction because they are in check from a rook." + }, + "expected": [ + { + "move": "Kd1", + "fen": "8/8/8/4r3/3k4/8/8/R2K3R b - - 1 1" + }, + { + "move": "Kf1", + "fen": "8/8/8/4r3/3k4/8/8/R4K1R b - - 1 1" + }, + { + "move": "Kd2", + "fen": "8/8/8/4r3/3k4/8/3K4/R6R b - - 1 1" + }, + { + "move": "Kf2", + "fen": "8/8/8/4r3/3k4/8/5K2/R6R b - - 1 1" + } + ] + }, + { + "description": "Transpose of 8/8/8/4r3/3k4/8/8/R3K2R w Q - 0 1", + "start": { + "fen": "r3k2r/8/8/3K4/4R3/8/8/8 b q - 0 1", + "description": "Black can't castle either direction because they are in check from a rook." + }, + "expected": [ + { + "move": "Kd7", + "fen": "r6r/3k4/8/3K4/4R3/8/8/8 w - - 1 2" + }, + { + "move": "Kf7", + "fen": "r6r/5k2/8/3K4/4R3/8/8/8 w - - 1 2" + }, + { + "move": "Kd8", + "fen": "r2k3r/8/8/3K4/4R3/8/8/8 w - - 1 2" + }, + { + "move": "Kf8", + "fen": "r4k1r/8/8/3K4/4R3/8/8/8 w - - 1 2" + } + ] + }, + { + "start": { + "fen": "8/8/4k3/8/8/8/4p3/R3K2R w KQ - 0 1", + "description": "White can't castle because it would be through squares attacked by a pawn." + }, + "expected": [ + { + "move": "Rb1", + "fen": "8/8/4k3/8/8/8/4p3/1R2K2R b K - 1 1" + }, + { + "move": "Rc1", + "fen": "8/8/4k3/8/8/8/4p3/2R1K2R b K - 1 1" + }, + { + "move": "Rd1", + "fen": "8/8/4k3/8/8/8/4p3/3RK2R b K - 1 1" + }, + { + "move": "Ra2", + "fen": "8/8/4k3/8/8/8/R3p3/4K2R b K - 1 1" + }, + { + "move": "Ra3", + "fen": "8/8/4k3/8/8/R7/4p3/4K2R b K - 1 1" + }, + { + "move": "Ra4", + "fen": "8/8/4k3/8/R7/8/4p3/4K2R b K - 1 1" + }, + { + "move": "Ra5", + "fen": "8/8/4k3/R7/8/8/4p3/4K2R b K - 1 1" + }, + { + "move": "Ra6+", + "fen": "8/8/R3k3/8/8/8/4p3/4K2R b K - 1 1" + }, + { + "move": "Ra7", + "fen": "8/R7/4k3/8/8/8/4p3/4K2R b K - 1 1" + }, + { + "move": "Ra8", + "fen": "R7/8/4k3/8/8/8/4p3/4K2R b K - 1 1" + }, + { + "move": "Kd2", + "fen": "8/8/4k3/8/8/8/3Kp3/R6R b - - 1 1" + }, + { + "move": "Kxe2", + "fen": "8/8/4k3/8/8/8/4K3/R6R b - - 0 1" + }, + { + "move": "Kf2", + "fen": "8/8/4k3/8/8/8/4pK2/R6R b - - 1 1" + }, + { + "move": "Rg1", + "fen": "8/8/4k3/8/8/8/4p3/R3K1R1 b Q - 1 1" + }, + { + "move": "Rf1", + "fen": "8/8/4k3/8/8/8/4p3/R3KR2 b Q - 1 1" + }, + { + "move": "Rh2", + "fen": "8/8/4k3/8/8/8/4p2R/R3K3 b Q - 1 1" + }, + { + "move": "Rh3", + "fen": "8/8/4k3/8/8/7R/4p3/R3K3 b Q - 1 1" + }, + { + "move": "Rh4", + "fen": "8/8/4k3/8/7R/8/4p3/R3K3 b Q - 1 1" + }, + { + "move": "Rh5", + "fen": "8/8/4k3/7R/8/8/4p3/R3K3 b Q - 1 1" + }, + { + "move": "Rh6+", + "fen": "8/8/4k2R/8/8/8/4p3/R3K3 b Q - 1 1" + }, + { + "move": "Rh7", + "fen": "8/7R/4k3/8/8/8/4p3/R3K3 b Q - 1 1" + }, + { + "move": "Rh8", + "fen": "7R/8/4k3/8/8/8/4p3/R3K3 b Q - 1 1" + } + ] + }, + { + "description": "Transpose of 8/8/4k3/8/8/8/4p3/R3K2R w KQ - 0 1", + "start": { + "fen": "r3k2r/4P3/8/8/8/4K3/8/8 b kq - 0 1", + "description": "Black can't castle because it would be through squares attacked by a pawn." + }, + "expected": [ + { + "move": "Ra7", + "fen": "4k2r/r3P3/8/8/8/4K3/8/8 w k - 1 2" + }, + { + "move": "Ra6", + "fen": "4k2r/4P3/r7/8/8/4K3/8/8 w k - 1 2" + }, + { + "move": "Ra5", + "fen": "4k2r/4P3/8/r7/8/4K3/8/8 w k - 1 2" + }, + { + "move": "Ra4", + "fen": "4k2r/4P3/8/8/r7/4K3/8/8 w k - 1 2" + }, + { + "move": "Ra3+", + "fen": "4k2r/4P3/8/8/8/r3K3/8/8 w k - 1 2" + }, + { + "move": "Ra2", + "fen": "4k2r/4P3/8/8/8/4K3/r7/8 w k - 1 2" + }, + { + "move": "Ra1", + "fen": "4k2r/4P3/8/8/8/4K3/8/r7 w k - 1 2" + }, + { + "move": "Rb8", + "fen": "1r2k2r/4P3/8/8/8/4K3/8/8 w k - 1 2" + }, + { + "move": "Rc8", + "fen": "2r1k2r/4P3/8/8/8/4K3/8/8 w k - 1 2" + }, + { + "move": "Rd8", + "fen": "3rk2r/4P3/8/8/8/4K3/8/8 w k - 1 2" + }, + { + "move": "Kd7", + "fen": "r6r/3kP3/8/8/8/4K3/8/8 w - - 1 2" + }, + { + "move": "Kxe7", + "fen": "r6r/4k3/8/8/8/4K3/8/8 w - - 0 2" + }, + { + "move": "Kf7", + "fen": "r6r/4Pk2/8/8/8/4K3/8/8 w - - 1 2" + }, + { + "move": "Rh7", + "fen": "r3k3/4P2r/8/8/8/4K3/8/8 w q - 1 2" + }, + { + "move": "Rh6", + "fen": "r3k3/4P3/7r/8/8/4K3/8/8 w q - 1 2" + }, + { + "move": "Rh5", + "fen": "r3k3/4P3/8/7r/8/4K3/8/8 w q - 1 2" + }, + { + "move": "Rh4", + "fen": "r3k3/4P3/8/8/7r/4K3/8/8 w q - 1 2" + }, + { + "move": "Rh3+", + "fen": "r3k3/4P3/8/8/8/4K2r/8/8 w q - 1 2" + }, + { + "move": "Rh2", + "fen": "r3k3/4P3/8/8/8/4K3/7r/8 w q - 1 2" + }, + { + "move": "Rh1", + "fen": "r3k3/4P3/8/8/8/4K3/8/7r w q - 1 2" + }, + { + "move": "Rg8", + "fen": "r3k1r1/4P3/8/8/8/4K3/8/8 w q - 1 2" + }, + { + "move": "Rf8", + "fen": "r3kr2/4P3/8/8/8/4K3/8/8 w q - 1 2" + } + ] + }, + { + "start": { + "fen": "8/8/4k3/3bb3/8/8/8/R3K2R w KQ - 0 1", + "description": "Attacks on the rooks shouldn't prevent castling." + }, + "expected": [ + { + "move": "Rb1", + "fen": "8/8/4k3/3bb3/8/8/8/1R2K2R b K - 1 1" + }, + { + "move": "Rc1", + "fen": "8/8/4k3/3bb3/8/8/8/2R1K2R b K - 1 1" + }, + { + "move": "Rd1", + "fen": "8/8/4k3/3bb3/8/8/8/3RK2R b K - 1 1" + }, + { + "move": "Ra2", + "fen": "8/8/4k3/3bb3/8/8/R7/4K2R b K - 1 1" + }, + { + "move": "Ra3", + "fen": "8/8/4k3/3bb3/8/R7/8/4K2R b K - 1 1" + }, + { + "move": "Ra4", + "fen": "8/8/4k3/3bb3/R7/8/8/4K2R b K - 1 1" + }, + { + "move": "Ra5", + "fen": "8/8/4k3/R2bb3/8/8/8/4K2R b K - 1 1" + }, + { + "move": "Ra6+", + "fen": "8/8/R3k3/3bb3/8/8/8/4K2R b K - 1 1" + }, + { + "move": "Ra7", + "fen": "8/R7/4k3/3bb3/8/8/8/4K2R b K - 1 1" + }, + { + "move": "Ra8", + "fen": "R7/8/4k3/3bb3/8/8/8/4K2R b K - 1 1" + }, + { + "move": "Kd1", + "fen": "8/8/4k3/3bb3/8/8/8/R2K3R b - - 1 1" + }, + { + "move": "Kf1", + "fen": "8/8/4k3/3bb3/8/8/8/R4K1R b - - 1 1" + }, + { + "move": "Kd2", + "fen": "8/8/4k3/3bb3/8/8/3K4/R6R b - - 1 1" + }, + { + "move": "Ke2", + "fen": "8/8/4k3/3bb3/8/8/4K3/R6R b - - 1 1" + }, + { + "move": "Kf2", + "fen": "8/8/4k3/3bb3/8/8/5K2/R6R b - - 1 1" + }, + { + "move": "O-O-O", + "fen": "8/8/4k3/3bb3/8/8/8/2KR3R b - - 1 1" + }, + { + "move": "O-O", + "fen": "8/8/4k3/3bb3/8/8/8/R4RK1 b - - 1 1" + }, + { + "move": "Rg1", + "fen": "8/8/4k3/3bb3/8/8/8/R3K1R1 b Q - 1 1" + }, + { + "move": "Rf1", + "fen": "8/8/4k3/3bb3/8/8/8/R3KR2 b Q - 1 1" + }, + { + "move": "Rh2", + "fen": "8/8/4k3/3bb3/8/8/7R/R3K3 b Q - 1 1" + }, + { + "move": "Rh3", + "fen": "8/8/4k3/3bb3/8/7R/8/R3K3 b Q - 1 1" + }, + { + "move": "Rh4", + "fen": "8/8/4k3/3bb3/7R/8/8/R3K3 b Q - 1 1" + }, + { + "move": "Rh5", + "fen": "8/8/4k3/3bb2R/8/8/8/R3K3 b Q - 1 1" + }, + { + "move": "Rh6+", + "fen": "8/8/4k2R/3bb3/8/8/8/R3K3 b Q - 1 1" + }, + { + "move": "Rh7", + "fen": "8/7R/4k3/3bb3/8/8/8/R3K3 b Q - 1 1" + }, + { + "move": "Rh8", + "fen": "7R/8/4k3/3bb3/8/8/8/R3K3 b Q - 1 1" + } + ] + }, + { + "description": "Transpose of 8/8/4k3/3bb3/8/8/8/R3K2R w KQ - 0 1", + "start": { + "fen": "r3k2r/8/8/8/3BB3/4K3/8/8 b kq - 0 1", + "description": "Attacks on the rooks shouldn't prevent castling." + }, + "expected": [ + { + "move": "Ra7", + "fen": "4k2r/r7/8/8/3BB3/4K3/8/8 w k - 1 2" + }, + { + "move": "Ra6", + "fen": "4k2r/8/r7/8/3BB3/4K3/8/8 w k - 1 2" + }, + { + "move": "Ra5", + "fen": "4k2r/8/8/r7/3BB3/4K3/8/8 w k - 1 2" + }, + { + "move": "Ra4", + "fen": "4k2r/8/8/8/r2BB3/4K3/8/8 w k - 1 2" + }, + { + "move": "Ra3+", + "fen": "4k2r/8/8/8/3BB3/r3K3/8/8 w k - 1 2" + }, + { + "move": "Ra2", + "fen": "4k2r/8/8/8/3BB3/4K3/r7/8 w k - 1 2" + }, + { + "move": "Ra1", + "fen": "4k2r/8/8/8/3BB3/4K3/8/r7 w k - 1 2" + }, + { + "move": "Rb8", + "fen": "1r2k2r/8/8/8/3BB3/4K3/8/8 w k - 1 2" + }, + { + "move": "Rc8", + "fen": "2r1k2r/8/8/8/3BB3/4K3/8/8 w k - 1 2" + }, + { + "move": "Rd8", + "fen": "3rk2r/8/8/8/3BB3/4K3/8/8 w k - 1 2" + }, + { + "move": "Kd7", + "fen": "r6r/3k4/8/8/3BB3/4K3/8/8 w - - 1 2" + }, + { + "move": "Ke7", + "fen": "r6r/4k3/8/8/3BB3/4K3/8/8 w - - 1 2" + }, + { + "move": "Kf7", + "fen": "r6r/5k2/8/8/3BB3/4K3/8/8 w - - 1 2" + }, + { + "move": "Kd8", + "fen": "r2k3r/8/8/8/3BB3/4K3/8/8 w - - 1 2" + }, + { + "move": "Kf8", + "fen": "r4k1r/8/8/8/3BB3/4K3/8/8 w - - 1 2" + }, + { + "move": "O-O-O", + "fen": "2kr3r/8/8/8/3BB3/4K3/8/8 w - - 1 2" + }, + { + "move": "O-O", + "fen": "r4rk1/8/8/8/3BB3/4K3/8/8 w - - 1 2" + }, + { + "move": "Rh7", + "fen": "r3k3/7r/8/8/3BB3/4K3/8/8 w q - 1 2" + }, + { + "move": "Rh6", + "fen": "r3k3/8/7r/8/3BB3/4K3/8/8 w q - 1 2" + }, + { + "move": "Rh5", + "fen": "r3k3/8/8/7r/3BB3/4K3/8/8 w q - 1 2" + }, + { + "move": "Rh4", + "fen": "r3k3/8/8/8/3BB2r/4K3/8/8 w q - 1 2" + }, + { + "move": "Rh3+", + "fen": "r3k3/8/8/8/3BB3/4K2r/8/8 w q - 1 2" + }, + { + "move": "Rh2", + "fen": "r3k3/8/8/8/3BB3/4K3/7r/8 w q - 1 2" + }, + { + "move": "Rh1", + "fen": "r3k3/8/8/8/3BB3/4K3/8/7r w q - 1 2" + }, + { + "move": "Rg8", + "fen": "r3k1r1/8/8/8/3BB3/4K3/8/8 w q - 1 2" + }, + { + "move": "Rf8", + "fen": "r3kr2/8/8/8/3BB3/4K3/8/8 w q - 1 2" + } + ] + }, + { + "start": { + "fen": "8/8/4k3/8/8/8/2p3p1/R3K2R w KQ - 0 1", + "description": "White can't castle through check from differently placed pawns." + }, + "expected": [ + { + "move": "Rb1", + "fen": "8/8/4k3/8/8/8/2p3p1/1R2K2R b K - 1 1" + }, + { + "move": "Rc1", + "fen": "8/8/4k3/8/8/8/2p3p1/2R1K2R b K - 1 1" + }, + { + "move": "Rd1", + "fen": "8/8/4k3/8/8/8/2p3p1/3RK2R b K - 1 1" + }, + { + "move": "Ra2", + "fen": "8/8/4k3/8/8/8/R1p3p1/4K2R b K - 1 1" + }, + { + "move": "Ra3", + "fen": "8/8/4k3/8/8/R7/2p3p1/4K2R b K - 1 1" + }, + { + "move": "Ra4", + "fen": "8/8/4k3/8/R7/8/2p3p1/4K2R b K - 1 1" + }, + { + "move": "Ra5", + "fen": "8/8/4k3/R7/8/8/2p3p1/4K2R b K - 1 1" + }, + { + "move": "Ra6+", + "fen": "8/8/R3k3/8/8/8/2p3p1/4K2R b K - 1 1" + }, + { + "move": "Ra7", + "fen": "8/R7/4k3/8/8/8/2p3p1/4K2R b K - 1 1" + }, + { + "move": "Ra8", + "fen": "R7/8/4k3/8/8/8/2p3p1/4K2R b K - 1 1" + }, + { + "move": "Kd2", + "fen": "8/8/4k3/8/8/8/2pK2p1/R6R b - - 1 1" + }, + { + "move": "Ke2", + "fen": "8/8/4k3/8/8/8/2p1K1p1/R6R b - - 1 1" + }, + { + "move": "Kf2", + "fen": "8/8/4k3/8/8/8/2p2Kp1/R6R b - - 1 1" + }, + { + "move": "Rg1", + "fen": "8/8/4k3/8/8/8/2p3p1/R3K1R1 b Q - 1 1" + }, + { + "move": "Rf1", + "fen": "8/8/4k3/8/8/8/2p3p1/R3KR2 b Q - 1 1" + }, + { + "move": "Rh2", + "fen": "8/8/4k3/8/8/8/2p3pR/R3K3 b Q - 1 1" + }, + { + "move": "Rh3", + "fen": "8/8/4k3/8/8/7R/2p3p1/R3K3 b Q - 1 1" + }, + { + "move": "Rh4", + "fen": "8/8/4k3/8/7R/8/2p3p1/R3K3 b Q - 1 1" + }, + { + "move": "Rh5", + "fen": "8/8/4k3/7R/8/8/2p3p1/R3K3 b Q - 1 1" + }, + { + "move": "Rh6+", + "fen": "8/8/4k2R/8/8/8/2p3p1/R3K3 b Q - 1 1" + }, + { + "move": "Rh7", + "fen": "8/7R/4k3/8/8/8/2p3p1/R3K3 b Q - 1 1" + }, + { + "move": "Rh8", + "fen": "7R/8/4k3/8/8/8/2p3p1/R3K3 b Q - 1 1" + } + ] + }, + { + "description": "Transpose of 8/8/4k3/8/8/8/2p3p1/R3K2R w KQ - 0 1", + "start": { + "fen": "r3k2r/2P3P1/8/8/8/4K3/8/8 b kq - 0 1", + "description": "Black can't castle through check from differently placed pawns." + }, + "expected": [ + { + "move": "Ra7", + "fen": "4k2r/r1P3P1/8/8/8/4K3/8/8 w k - 1 2" + }, + { + "move": "Ra6", + "fen": "4k2r/2P3P1/r7/8/8/4K3/8/8 w k - 1 2" + }, + { + "move": "Ra5", + "fen": "4k2r/2P3P1/8/r7/8/4K3/8/8 w k - 1 2" + }, + { + "move": "Ra4", + "fen": "4k2r/2P3P1/8/8/r7/4K3/8/8 w k - 1 2" + }, + { + "move": "Ra3+", + "fen": "4k2r/2P3P1/8/8/8/r3K3/8/8 w k - 1 2" + }, + { + "move": "Ra2", + "fen": "4k2r/2P3P1/8/8/8/4K3/r7/8 w k - 1 2" + }, + { + "move": "Ra1", + "fen": "4k2r/2P3P1/8/8/8/4K3/8/r7 w k - 1 2" + }, + { + "move": "Rb8", + "fen": "1r2k2r/2P3P1/8/8/8/4K3/8/8 w k - 1 2" + }, + { + "move": "Rc8", + "fen": "2r1k2r/2P3P1/8/8/8/4K3/8/8 w k - 1 2" + }, + { + "move": "Rd8", + "fen": "3rk2r/2P3P1/8/8/8/4K3/8/8 w k - 1 2" + }, + { + "move": "Kd7", + "fen": "r6r/2Pk2P1/8/8/8/4K3/8/8 w - - 1 2" + }, + { + "move": "Ke7", + "fen": "r6r/2P1k1P1/8/8/8/4K3/8/8 w - - 1 2" + }, + { + "move": "Kf7", + "fen": "r6r/2P2kP1/8/8/8/4K3/8/8 w - - 1 2" + }, + { + "move": "Rh7", + "fen": "r3k3/2P3Pr/8/8/8/4K3/8/8 w q - 1 2" + }, + { + "move": "Rh6", + "fen": "r3k3/2P3P1/7r/8/8/4K3/8/8 w q - 1 2" + }, + { + "move": "Rh5", + "fen": "r3k3/2P3P1/8/7r/8/4K3/8/8 w q - 1 2" + }, + { + "move": "Rh4", + "fen": "r3k3/2P3P1/8/8/7r/4K3/8/8 w q - 1 2" + }, + { + "move": "Rh3+", + "fen": "r3k3/2P3P1/8/8/8/4K2r/8/8 w q - 1 2" + }, + { + "move": "Rh2", + "fen": "r3k3/2P3P1/8/8/8/4K3/7r/8 w q - 1 2" + }, + { + "move": "Rh1", + "fen": "r3k3/2P3P1/8/8/8/4K3/8/7r w q - 1 2" + }, + { + "move": "Rg8", + "fen": "r3k1r1/2P3P1/8/8/8/4K3/8/8 w q - 1 2" + }, + { + "move": "Rf8", + "fen": "r3kr2/2P3P1/8/8/8/4K3/8/8 w q - 1 2" + } + ] + }, + { + "start": { + "fen": "8/8/4k3/8/8/pr6/8/R3K3 w Q - 0 1", + "description": "An attack on b1 shouldn't prevent queenside castle." + }, + "expected": [ + { + "move": "Rb1", + "fen": "8/8/4k3/8/8/pr6/8/1R2K3 b - - 1 1" + }, + { + "move": "Rc1", + "fen": "8/8/4k3/8/8/pr6/8/2R1K3 b - - 1 1" + }, + { + "move": "Rd1", + "fen": "8/8/4k3/8/8/pr6/8/3RK3 b - - 1 1" + }, + { + "move": "Ra2", + "fen": "8/8/4k3/8/8/pr6/R7/4K3 b - - 1 1" + }, + { + "move": "Rxa3", + "fen": "8/8/4k3/8/8/Rr6/8/4K3 b - - 0 1" + }, + { + "move": "Kd1", + "fen": "8/8/4k3/8/8/pr6/8/R2K4 b - - 1 1" + }, + { + "move": "Kf1", + "fen": "8/8/4k3/8/8/pr6/8/R4K2 b - - 1 1" + }, + { + "move": "Kd2", + "fen": "8/8/4k3/8/8/pr6/3K4/R7 b - - 1 1" + }, + { + "move": "Ke2", + "fen": "8/8/4k3/8/8/pr6/4K3/R7 b - - 1 1" + }, + { + "move": "Kf2", + "fen": "8/8/4k3/8/8/pr6/5K2/R7 b - - 1 1" + }, + { + "move": "O-O-O", + "fen": "8/8/4k3/8/8/pr6/8/2KR4 b - - 1 1" + } + ] + }, + { + "description": "Transpose of 8/8/4k3/8/8/pr6/8/R3K3 w Q - 0 1", + "start": { + "fen": "r3k3/8/PR6/8/8/4K3/8/8 b q - 0 1", + "description": "An attack on b1 shouldn't prevent queenside castle." + }, + "expected": [ + { + "move": "Ra7", + "fen": "4k3/r7/PR6/8/8/4K3/8/8 w - - 1 2" + }, + { + "move": "Rxa6", + "fen": "4k3/8/rR6/8/8/4K3/8/8 w - - 0 2" + }, + { + "move": "Rb8", + "fen": "1r2k3/8/PR6/8/8/4K3/8/8 w - - 1 2" + }, + { + "move": "Rc8", + "fen": "2r1k3/8/PR6/8/8/4K3/8/8 w - - 1 2" + }, + { + "move": "Rd8", + "fen": "3rk3/8/PR6/8/8/4K3/8/8 w - - 1 2" + }, + { + "move": "Kd7", + "fen": "r7/3k4/PR6/8/8/4K3/8/8 w - - 1 2" + }, + { + "move": "Ke7", + "fen": "r7/4k3/PR6/8/8/4K3/8/8 w - - 1 2" + }, + { + "move": "Kf7", + "fen": "r7/5k2/PR6/8/8/4K3/8/8 w - - 1 2" + }, + { + "move": "Kd8", + "fen": "r2k4/8/PR6/8/8/4K3/8/8 w - - 1 2" + }, + { + "move": "Kf8", + "fen": "r4k2/8/PR6/8/8/4K3/8/8 w - - 1 2" + }, + { + "move": "O-O-O", + "fen": "2kr4/8/PR6/8/8/4K3/8/8 w - - 1 2" + } + ] + }, + { + "start": { + "fen": "r3k2r/R3P2R/8/8/8/8/8/4K3 b kq - 0 1", + "description": "Black can't castle either direction because of attack from pawn." + }, + "expected": [ + { + "move": "Rxa7", + "fen": "4k2r/r3P2R/8/8/8/8/8/4K3 w k - 0 2" + }, + { + "move": "Rb8", + "fen": "1r2k2r/R3P2R/8/8/8/8/8/4K3 w k - 1 2" + }, + { + "move": "Rc8", + "fen": "2r1k2r/R3P2R/8/8/8/8/8/4K3 w k - 1 2" + }, + { + "move": "Rd8", + "fen": "3rk2r/R3P2R/8/8/8/8/8/4K3 w k - 1 2" + }, + { + "move": "Rxh7", + "fen": "r3k3/R3P2r/8/8/8/8/8/4K3 w q - 0 2" + }, + { + "move": "Rg8", + "fen": "r3k1r1/R3P2R/8/8/8/8/8/4K3 w q - 1 2" + }, + { + "move": "Rf8", + "fen": "r3kr2/R3P2R/8/8/8/8/8/4K3 w q - 1 2" + } + ] + }, + { + "description": "Transpose of r3k2r/R3P2R/8/8/8/8/8/4K3 b kq - 0 1", + "start": { + "fen": "4k3/8/8/8/8/8/r3p2r/R3K2R w KQ - 0 1", + "description": "White can't castle either direction because of attack from pawn." + }, + "expected": [ + { + "move": "Rb1", + "fen": "4k3/8/8/8/8/8/r3p2r/1R2K2R b K - 1 1" + }, + { + "move": "Rc1", + "fen": "4k3/8/8/8/8/8/r3p2r/2R1K2R b K - 1 1" + }, + { + "move": "Rd1", + "fen": "4k3/8/8/8/8/8/r3p2r/3RK2R b K - 1 1" + }, + { + "move": "Rxa2", + "fen": "4k3/8/8/8/8/8/R3p2r/4K2R b K - 0 1" + }, + { + "move": "Rg1", + "fen": "4k3/8/8/8/8/8/r3p2r/R3K1R1 b Q - 1 1" + }, + { + "move": "Rf1", + "fen": "4k3/8/8/8/8/8/r3p2r/R3KR2 b Q - 1 1" + }, + { + "move": "Rxh2", + "fen": "4k3/8/8/8/8/8/r3p2R/R3K3 b Q - 0 1" + } + ] + }, + { + "start": { + "fen": "rnbq1k1r/pp1Pbppp/2p5/8/2B5/8/PPP1N1PP/RNBQK2n w Q - 1 8", + "description": "From https://www.youtube.com/watch?v=U4ogK0MIzqk&ab_channel=SebastianLague&t=10m10s" + }, + "expected": [ + { + "move": "Nd2", + "fen": "rnbq1k1r/pp1Pbppp/2p5/8/2B5/8/PPPNN1PP/R1BQK2n b Q - 2 8" + }, + { + "move": "Na3", + "fen": "rnbq1k1r/pp1Pbppp/2p5/8/2B5/N7/PPP1N1PP/R1BQK2n b Q - 2 8" + }, + { + "move": "Nbc3", + "fen": "rnbq1k1r/pp1Pbppp/2p5/8/2B5/2N5/PPP1N1PP/R1BQK2n b Q - 2 8" + }, + { + "move": "Bd2", + "fen": "rnbq1k1r/pp1Pbppp/2p5/8/2B5/8/PPPBN1PP/RN1QK2n b Q - 2 8" + }, + { + "move": "Be3", + "fen": "rnbq1k1r/pp1Pbppp/2p5/8/2B5/4B3/PPP1N1PP/RN1QK2n b Q - 2 8" + }, + { + "move": "Bf4", + "fen": "rnbq1k1r/pp1Pbppp/2p5/8/2B2B2/8/PPP1N1PP/RN1QK2n b Q - 2 8" + }, + { + "move": "Bg5", + "fen": "rnbq1k1r/pp1Pbppp/2p5/6B1/2B5/8/PPP1N1PP/RN1QK2n b Q - 2 8" + }, + { + "move": "Bh6", + "fen": "rnbq1k1r/pp1Pbppp/2p4B/8/2B5/8/PPP1N1PP/RN1QK2n b Q - 2 8" + }, + { + "move": "Qd2", + "fen": "rnbq1k1r/pp1Pbppp/2p5/8/2B5/8/PPPQN1PP/RNB1K2n b Q - 2 8" + }, + { + "move": "Qd3", + "fen": "rnbq1k1r/pp1Pbppp/2p5/8/2B5/3Q4/PPP1N1PP/RNB1K2n b Q - 2 8" + }, + { + "move": "Qd4", + "fen": "rnbq1k1r/pp1Pbppp/2p5/8/2BQ4/8/PPP1N1PP/RNB1K2n b Q - 2 8" + }, + { + "move": "Qd5", + "fen": "rnbq1k1r/pp1Pbppp/2p5/3Q4/2B5/8/PPP1N1PP/RNB1K2n b Q - 2 8" + }, + { + "move": "Qd6", + "fen": "rnbq1k1r/pp1Pbppp/2pQ4/8/2B5/8/PPP1N1PP/RNB1K2n b Q - 2 8" + }, + { + "move": "Kf1", + "fen": "rnbq1k1r/pp1Pbppp/2p5/8/2B5/8/PPP1N1PP/RNBQ1K1n b - - 2 8" + }, + { + "move": "Kd2", + "fen": "rnbq1k1r/pp1Pbppp/2p5/8/2B5/8/PPPKN1PP/RNBQ3n b - - 2 8" + }, + { + "move": "a3", + "fen": "rnbq1k1r/pp1Pbppp/2p5/8/2B5/P7/1PP1N1PP/RNBQK2n b Q - 0 8" + }, + { + "move": "a4", + "fen": "rnbq1k1r/pp1Pbppp/2p5/8/P1B5/8/1PP1N1PP/RNBQK2n b Q a3 0 8" + }, + { + "move": "b3", + "fen": "rnbq1k1r/pp1Pbppp/2p5/8/2B5/1P6/P1P1N1PP/RNBQK2n b Q - 0 8" + }, + { + "move": "b4", + "fen": "rnbq1k1r/pp1Pbppp/2p5/8/1PB5/8/P1P1N1PP/RNBQK2n b Q b3 0 8" + }, + { + "move": "c3", + "fen": "rnbq1k1r/pp1Pbppp/2p5/8/2B5/2P5/PP2N1PP/RNBQK2n b Q - 0 8" + }, + { + "move": "Ng1", + "fen": "rnbq1k1r/pp1Pbppp/2p5/8/2B5/8/PPP3PP/RNBQK1Nn b Q - 2 8" + }, + { + "move": "Nec3", + "fen": "rnbq1k1r/pp1Pbppp/2p5/8/2B5/2N5/PPP3PP/RNBQK2n b Q - 2 8" + }, + { + "move": "Ng3", + "fen": "rnbq1k1r/pp1Pbppp/2p5/8/2B5/6N1/PPP3PP/RNBQK2n b Q - 2 8" + }, + { + "move": "Nd4", + "fen": "rnbq1k1r/pp1Pbppp/2p5/8/2BN4/8/PPP3PP/RNBQK2n b Q - 2 8" + }, + { + "move": "Nf4", + "fen": "rnbq1k1r/pp1Pbppp/2p5/8/2B2N2/8/PPP3PP/RNBQK2n b Q - 2 8" + }, + { + "move": "g3", + "fen": "rnbq1k1r/pp1Pbppp/2p5/8/2B5/6P1/PPP1N2P/RNBQK2n b Q - 0 8" + }, + { + "move": "g4", + "fen": "rnbq1k1r/pp1Pbppp/2p5/8/2B3P1/8/PPP1N2P/RNBQK2n b Q g3 0 8" + }, + { + "move": "h3", + "fen": "rnbq1k1r/pp1Pbppp/2p5/8/2B5/7P/PPP1N1P1/RNBQK2n b Q - 0 8" + }, + { + "move": "h4", + "fen": "rnbq1k1r/pp1Pbppp/2p5/8/2B4P/8/PPP1N1P1/RNBQK2n b Q h3 0 8" + }, + { + "move": "Bb3", + "fen": "rnbq1k1r/pp1Pbppp/2p5/8/8/1B6/PPP1N1PP/RNBQK2n b Q - 2 8" + }, + { + "move": "Bd3", + "fen": "rnbq1k1r/pp1Pbppp/2p5/8/8/3B4/PPP1N1PP/RNBQK2n b Q - 2 8" + }, + { + "move": "Bb5", + "fen": "rnbq1k1r/pp1Pbppp/2p5/1B6/8/8/PPP1N1PP/RNBQK2n b Q - 2 8" + }, + { + "move": "Ba6", + "fen": "rnbq1k1r/pp1Pbppp/B1p5/8/8/8/PPP1N1PP/RNBQK2n b Q - 2 8" + }, + { + "move": "Bd5", + "fen": "rnbq1k1r/pp1Pbppp/2p5/3B4/8/8/PPP1N1PP/RNBQK2n b Q - 2 8" + }, + { + "move": "Be6", + "fen": "rnbq1k1r/pp1Pbppp/2p1B3/8/8/8/PPP1N1PP/RNBQK2n b Q - 2 8" + }, + { + "move": "Bxf7", + "fen": "rnbq1k1r/pp1PbBpp/2p5/8/8/8/PPP1N1PP/RNBQK2n b Q - 0 8" + }, + { + "move": "dxc8=Q", + "fen": "rnQq1k1r/pp2bppp/2p5/8/2B5/8/PPP1N1PP/RNBQK2n b Q - 0 8" + }, + { + "move": "dxc8=R", + "fen": "rnRq1k1r/pp2bppp/2p5/8/2B5/8/PPP1N1PP/RNBQK2n b Q - 0 8" + }, + { + "move": "dxc8=N", + "fen": "rnNq1k1r/pp2bppp/2p5/8/2B5/8/PPP1N1PP/RNBQK2n b Q - 0 8" + }, + { + "move": "dxc8=B", + "fen": "rnBq1k1r/pp2bppp/2p5/8/2B5/8/PPP1N1PP/RNBQK2n b Q - 0 8" + } + ] + }, + { + "description": "Transpose of rnbq1k1r/pp1Pbppp/2p5/8/2B5/8/PPP1N1PP/RNBQK2n w Q - 1 8", + "start": { + "fen": "rnbqk2N/ppp1n1pp/8/2b5/8/2P5/PP1pBPPP/RNBQ1K1R b q - 1 8", + "description": "From https://www.youtube.com/watch?v=U4ogK0MIzqk&ab_channel=SebastianLague&t=10m10s" + }, + "expected": [ + { + "move": "dxc1=Q", + "fen": "rnbqk2N/ppp1n1pp/8/2b5/8/2P5/PP2BPPP/RNqQ1K1R w q - 0 9" + }, + { + "move": "dxc1=R", + "fen": "rnbqk2N/ppp1n1pp/8/2b5/8/2P5/PP2BPPP/RNrQ1K1R w q - 0 9" + }, + { + "move": "dxc1=N", + "fen": "rnbqk2N/ppp1n1pp/8/2b5/8/2P5/PP2BPPP/RNnQ1K1R w q - 0 9" + }, + { + "move": "dxc1=B", + "fen": "rnbqk2N/ppp1n1pp/8/2b5/8/2P5/PP2BPPP/RNbQ1K1R w q - 0 9" + }, + { + "move": "Bb4", + "fen": "rnbqk2N/ppp1n1pp/8/8/1b6/2P5/PP1pBPPP/RNBQ1K1R w q - 2 9" + }, + { + "move": "Ba3", + "fen": "rnbqk2N/ppp1n1pp/8/8/8/b1P5/PP1pBPPP/RNBQ1K1R w q - 2 9" + }, + { + "move": "Bd4", + "fen": "rnbqk2N/ppp1n1pp/8/8/3b4/2P5/PP1pBPPP/RNBQ1K1R w q - 2 9" + }, + { + "move": "Be3", + "fen": "rnbqk2N/ppp1n1pp/8/8/8/2P1b3/PP1pBPPP/RNBQ1K1R w q - 2 9" + }, + { + "move": "Bxf2", + "fen": "rnbqk2N/ppp1n1pp/8/8/8/2P5/PP1pBbPP/RNBQ1K1R w q - 0 9" + }, + { + "move": "Bb6", + "fen": "rnbqk2N/ppp1n1pp/1b6/8/8/2P5/PP1pBPPP/RNBQ1K1R w q - 2 9" + }, + { + "move": "Bd6", + "fen": "rnbqk2N/ppp1n1pp/3b4/8/8/2P5/PP1pBPPP/RNBQ1K1R w q - 2 9" + }, + { + "move": "a6", + "fen": "rnbqk2N/1pp1n1pp/p7/2b5/8/2P5/PP1pBPPP/RNBQ1K1R w q - 0 9" + }, + { + "move": "a5", + "fen": "rnbqk2N/1pp1n1pp/8/p1b5/8/2P5/PP1pBPPP/RNBQ1K1R w q a6 0 9" + }, + { + "move": "b6", + "fen": "rnbqk2N/p1p1n1pp/1p6/2b5/8/2P5/PP1pBPPP/RNBQ1K1R w q - 0 9" + }, + { + "move": "b5", + "fen": "rnbqk2N/p1p1n1pp/8/1pb5/8/2P5/PP1pBPPP/RNBQ1K1R w q b6 0 9" + }, + { + "move": "c6", + "fen": "rnbqk2N/pp2n1pp/2p5/2b5/8/2P5/PP1pBPPP/RNBQ1K1R w q - 0 9" + }, + { + "move": "Nd5", + "fen": "rnbqk2N/ppp3pp/8/2bn4/8/2P5/PP1pBPPP/RNBQ1K1R w q - 2 9" + }, + { + "move": "Nf5", + "fen": "rnbqk2N/ppp3pp/8/2b2n2/8/2P5/PP1pBPPP/RNBQ1K1R w q - 2 9" + }, + { + "move": "Nec6", + "fen": "rnbqk2N/ppp3pp/2n5/2b5/8/2P5/PP1pBPPP/RNBQ1K1R w q - 2 9" + }, + { + "move": "Ng6", + "fen": "rnbqk2N/ppp3pp/6n1/2b5/8/2P5/PP1pBPPP/RNBQ1K1R w q - 2 9" + }, + { + "move": "Ng8", + "fen": "rnbqk1nN/ppp3pp/8/2b5/8/2P5/PP1pBPPP/RNBQ1K1R w q - 2 9" + }, + { + "move": "g6", + "fen": "rnbqk2N/ppp1n2p/6p1/2b5/8/2P5/PP1pBPPP/RNBQ1K1R w q - 0 9" + }, + { + "move": "g5", + "fen": "rnbqk2N/ppp1n2p/8/2b3p1/8/2P5/PP1pBPPP/RNBQ1K1R w q g6 0 9" + }, + { + "move": "h6", + "fen": "rnbqk2N/ppp1n1p1/7p/2b5/8/2P5/PP1pBPPP/RNBQ1K1R w q - 0 9" + }, + { + "move": "h5", + "fen": "rnbqk2N/ppp1n1p1/8/2b4p/8/2P5/PP1pBPPP/RNBQ1K1R w q h6 0 9" + }, + { + "move": "Na6", + "fen": "r1bqk2N/ppp1n1pp/n7/2b5/8/2P5/PP1pBPPP/RNBQ1K1R w q - 2 9" + }, + { + "move": "Nbc6", + "fen": "r1bqk2N/ppp1n1pp/2n5/2b5/8/2P5/PP1pBPPP/RNBQ1K1R w q - 2 9" + }, + { + "move": "Nd7", + "fen": "r1bqk2N/pppnn1pp/8/2b5/8/2P5/PP1pBPPP/RNBQ1K1R w q - 2 9" + }, + { + "move": "Bd7", + "fen": "rn1qk2N/pppbn1pp/8/2b5/8/2P5/PP1pBPPP/RNBQ1K1R w q - 2 9" + }, + { + "move": "Be6", + "fen": "rn1qk2N/ppp1n1pp/4b3/2b5/8/2P5/PP1pBPPP/RNBQ1K1R w q - 2 9" + }, + { + "move": "Bf5", + "fen": "rn1qk2N/ppp1n1pp/8/2b2b2/8/2P5/PP1pBPPP/RNBQ1K1R w q - 2 9" + }, + { + "move": "Bg4", + "fen": "rn1qk2N/ppp1n1pp/8/2b5/6b1/2P5/PP1pBPPP/RNBQ1K1R w q - 2 9" + }, + { + "move": "Bh3", + "fen": "rn1qk2N/ppp1n1pp/8/2b5/8/2P4b/PP1pBPPP/RNBQ1K1R w q - 2 9" + }, + { + "move": "Qd7", + "fen": "rnb1k2N/pppqn1pp/8/2b5/8/2P5/PP1pBPPP/RNBQ1K1R w q - 2 9" + }, + { + "move": "Qd6", + "fen": "rnb1k2N/ppp1n1pp/3q4/2b5/8/2P5/PP1pBPPP/RNBQ1K1R w q - 2 9" + }, + { + "move": "Qd5", + "fen": "rnb1k2N/ppp1n1pp/8/2bq4/8/2P5/PP1pBPPP/RNBQ1K1R w q - 2 9" + }, + { + "move": "Qd4", + "fen": "rnb1k2N/ppp1n1pp/8/2b5/3q4/2P5/PP1pBPPP/RNBQ1K1R w q - 2 9" + }, + { + "move": "Qd3", + "fen": "rnb1k2N/ppp1n1pp/8/2b5/8/2Pq4/PP1pBPPP/RNBQ1K1R w q - 2 9" + }, + { + "move": "Kd7", + "fen": "rnbq3N/pppkn1pp/8/2b5/8/2P5/PP1pBPPP/RNBQ1K1R w - - 2 9" + }, + { + "move": "Kf8", + "fen": "rnbq1k1N/ppp1n1pp/8/2b5/8/2P5/PP1pBPPP/RNBQ1K1R w - - 2 9" + } + ] + }, + { + "start": { + "fen": "rnbq1k1r/pp1Pbppp/2p5/8/2B5/8/PPP1N1PP/RNBQKn1R w KQ - 1 8", + "description": "Shouldn't be able to castle through opponent piece." + }, + "expected": [ + { + "move": "Nd2", + "fen": "rnbq1k1r/pp1Pbppp/2p5/8/2B5/8/PPPNN1PP/R1BQKn1R b KQ - 2 8" + }, + { + "move": "Na3", + "fen": "rnbq1k1r/pp1Pbppp/2p5/8/2B5/N7/PPP1N1PP/R1BQKn1R b KQ - 2 8" + }, + { + "move": "Nbc3", + "fen": "rnbq1k1r/pp1Pbppp/2p5/8/2B5/2N5/PPP1N1PP/R1BQKn1R b KQ - 2 8" + }, + { + "move": "Bd2", + "fen": "rnbq1k1r/pp1Pbppp/2p5/8/2B5/8/PPPBN1PP/RN1QKn1R b KQ - 2 8" + }, + { + "move": "Be3", + "fen": "rnbq1k1r/pp1Pbppp/2p5/8/2B5/4B3/PPP1N1PP/RN1QKn1R b KQ - 2 8" + }, + { + "move": "Bf4", + "fen": "rnbq1k1r/pp1Pbppp/2p5/8/2B2B2/8/PPP1N1PP/RN1QKn1R b KQ - 2 8" + }, + { + "move": "Bg5", + "fen": "rnbq1k1r/pp1Pbppp/2p5/6B1/2B5/8/PPP1N1PP/RN1QKn1R b KQ - 2 8" + }, + { + "move": "Bh6", + "fen": "rnbq1k1r/pp1Pbppp/2p4B/8/2B5/8/PPP1N1PP/RN1QKn1R b KQ - 2 8" + }, + { + "move": "Qd2", + "fen": "rnbq1k1r/pp1Pbppp/2p5/8/2B5/8/PPPQN1PP/RNB1Kn1R b KQ - 2 8" + }, + { + "move": "Qd3", + "fen": "rnbq1k1r/pp1Pbppp/2p5/8/2B5/3Q4/PPP1N1PP/RNB1Kn1R b KQ - 2 8" + }, + { + "move": "Qd4", + "fen": "rnbq1k1r/pp1Pbppp/2p5/8/2BQ4/8/PPP1N1PP/RNB1Kn1R b KQ - 2 8" + }, + { + "move": "Qd5", + "fen": "rnbq1k1r/pp1Pbppp/2p5/3Q4/2B5/8/PPP1N1PP/RNB1Kn1R b KQ - 2 8" + }, + { + "move": "Qd6", + "fen": "rnbq1k1r/pp1Pbppp/2pQ4/8/2B5/8/PPP1N1PP/RNB1Kn1R b KQ - 2 8" + }, + { + "move": "Kxf1", + "fen": "rnbq1k1r/pp1Pbppp/2p5/8/2B5/8/PPP1N1PP/RNBQ1K1R b - - 0 8" + }, + { + "move": "Kf2", + "fen": "rnbq1k1r/pp1Pbppp/2p5/8/2B5/8/PPP1NKPP/RNBQ1n1R b - - 2 8" + }, + { + "move": "Rg1", + "fen": "rnbq1k1r/pp1Pbppp/2p5/8/2B5/8/PPP1N1PP/RNBQKnR1 b Q - 2 8" + }, + { + "move": "Rxf1", + "fen": "rnbq1k1r/pp1Pbppp/2p5/8/2B5/8/PPP1N1PP/RNBQKR2 b Q - 0 8" + }, + { + "move": "a3", + "fen": "rnbq1k1r/pp1Pbppp/2p5/8/2B5/P7/1PP1N1PP/RNBQKn1R b KQ - 0 8" + }, + { + "move": "a4", + "fen": "rnbq1k1r/pp1Pbppp/2p5/8/P1B5/8/1PP1N1PP/RNBQKn1R b KQ a3 0 8" + }, + { + "move": "b3", + "fen": "rnbq1k1r/pp1Pbppp/2p5/8/2B5/1P6/P1P1N1PP/RNBQKn1R b KQ - 0 8" + }, + { + "move": "b4", + "fen": "rnbq1k1r/pp1Pbppp/2p5/8/1PB5/8/P1P1N1PP/RNBQKn1R b KQ b3 0 8" + }, + { + "move": "c3", + "fen": "rnbq1k1r/pp1Pbppp/2p5/8/2B5/2P5/PP2N1PP/RNBQKn1R b KQ - 0 8" + }, + { + "move": "Ng1", + "fen": "rnbq1k1r/pp1Pbppp/2p5/8/2B5/8/PPP3PP/RNBQKnNR b KQ - 2 8" + }, + { + "move": "Nec3", + "fen": "rnbq1k1r/pp1Pbppp/2p5/8/2B5/2N5/PPP3PP/RNBQKn1R b KQ - 2 8" + }, + { + "move": "Ng3", + "fen": "rnbq1k1r/pp1Pbppp/2p5/8/2B5/6N1/PPP3PP/RNBQKn1R b KQ - 2 8" + }, + { + "move": "Nd4", + "fen": "rnbq1k1r/pp1Pbppp/2p5/8/2BN4/8/PPP3PP/RNBQKn1R b KQ - 2 8" + }, + { + "move": "Nf4", + "fen": "rnbq1k1r/pp1Pbppp/2p5/8/2B2N2/8/PPP3PP/RNBQKn1R b KQ - 2 8" + }, + { + "move": "g3", + "fen": "rnbq1k1r/pp1Pbppp/2p5/8/2B5/6P1/PPP1N2P/RNBQKn1R b KQ - 0 8" + }, + { + "move": "g4", + "fen": "rnbq1k1r/pp1Pbppp/2p5/8/2B3P1/8/PPP1N2P/RNBQKn1R b KQ g3 0 8" + }, + { + "move": "h3", + "fen": "rnbq1k1r/pp1Pbppp/2p5/8/2B5/7P/PPP1N1P1/RNBQKn1R b KQ - 0 8" + }, + { + "move": "h4", + "fen": "rnbq1k1r/pp1Pbppp/2p5/8/2B4P/8/PPP1N1P1/RNBQKn1R b KQ h3 0 8" + }, + { + "move": "Bb3", + "fen": "rnbq1k1r/pp1Pbppp/2p5/8/8/1B6/PPP1N1PP/RNBQKn1R b KQ - 2 8" + }, + { + "move": "Bd3", + "fen": "rnbq1k1r/pp1Pbppp/2p5/8/8/3B4/PPP1N1PP/RNBQKn1R b KQ - 2 8" + }, + { + "move": "Bb5", + "fen": "rnbq1k1r/pp1Pbppp/2p5/1B6/8/8/PPP1N1PP/RNBQKn1R b KQ - 2 8" + }, + { + "move": "Ba6", + "fen": "rnbq1k1r/pp1Pbppp/B1p5/8/8/8/PPP1N1PP/RNBQKn1R b KQ - 2 8" + }, + { + "move": "Bd5", + "fen": "rnbq1k1r/pp1Pbppp/2p5/3B4/8/8/PPP1N1PP/RNBQKn1R b KQ - 2 8" + }, + { + "move": "Be6", + "fen": "rnbq1k1r/pp1Pbppp/2p1B3/8/8/8/PPP1N1PP/RNBQKn1R b KQ - 2 8" + }, + { + "move": "Bxf7", + "fen": "rnbq1k1r/pp1PbBpp/2p5/8/8/8/PPP1N1PP/RNBQKn1R b KQ - 0 8" + }, + { + "move": "dxc8=Q", + "fen": "rnQq1k1r/pp2bppp/2p5/8/2B5/8/PPP1N1PP/RNBQKn1R b KQ - 0 8" + }, + { + "move": "dxc8=R", + "fen": "rnRq1k1r/pp2bppp/2p5/8/2B5/8/PPP1N1PP/RNBQKn1R b KQ - 0 8" + }, + { + "move": "dxc8=N", + "fen": "rnNq1k1r/pp2bppp/2p5/8/2B5/8/PPP1N1PP/RNBQKn1R b KQ - 0 8" + }, + { + "move": "dxc8=B", + "fen": "rnBq1k1r/pp2bppp/2p5/8/2B5/8/PPP1N1PP/RNBQKn1R b KQ - 0 8" + } + ] + }, + { + "description": "Transpose of rnbq1k1r/pp1Pbppp/2p5/8/2B5/8/PPP1N1PP/RNBQKn1R w KQ - 1 8", + "start": { + "fen": "rnbqkN1r/ppp1n1pp/8/2b5/8/2P5/PP1pBPPP/RNBQ1K1R b kq - 1 8", + "description": "Shouldn't be able to castle through opponent piece." + }, + "expected": [ + { + "move": "dxc1=Q", + "fen": "rnbqkN1r/ppp1n1pp/8/2b5/8/2P5/PP2BPPP/RNqQ1K1R w kq - 0 9" + }, + { + "move": "dxc1=R", + "fen": "rnbqkN1r/ppp1n1pp/8/2b5/8/2P5/PP2BPPP/RNrQ1K1R w kq - 0 9" + }, + { + "move": "dxc1=N", + "fen": "rnbqkN1r/ppp1n1pp/8/2b5/8/2P5/PP2BPPP/RNnQ1K1R w kq - 0 9" + }, + { + "move": "dxc1=B", + "fen": "rnbqkN1r/ppp1n1pp/8/2b5/8/2P5/PP2BPPP/RNbQ1K1R w kq - 0 9" + }, + { + "move": "Bb4", + "fen": "rnbqkN1r/ppp1n1pp/8/8/1b6/2P5/PP1pBPPP/RNBQ1K1R w kq - 2 9" + }, + { + "move": "Ba3", + "fen": "rnbqkN1r/ppp1n1pp/8/8/8/b1P5/PP1pBPPP/RNBQ1K1R w kq - 2 9" + }, + { + "move": "Bd4", + "fen": "rnbqkN1r/ppp1n1pp/8/8/3b4/2P5/PP1pBPPP/RNBQ1K1R w kq - 2 9" + }, + { + "move": "Be3", + "fen": "rnbqkN1r/ppp1n1pp/8/8/8/2P1b3/PP1pBPPP/RNBQ1K1R w kq - 2 9" + }, + { + "move": "Bxf2", + "fen": "rnbqkN1r/ppp1n1pp/8/8/8/2P5/PP1pBbPP/RNBQ1K1R w kq - 0 9" + }, + { + "move": "Bb6", + "fen": "rnbqkN1r/ppp1n1pp/1b6/8/8/2P5/PP1pBPPP/RNBQ1K1R w kq - 2 9" + }, + { + "move": "Bd6", + "fen": "rnbqkN1r/ppp1n1pp/3b4/8/8/2P5/PP1pBPPP/RNBQ1K1R w kq - 2 9" + }, + { + "move": "a6", + "fen": "rnbqkN1r/1pp1n1pp/p7/2b5/8/2P5/PP1pBPPP/RNBQ1K1R w kq - 0 9" + }, + { + "move": "a5", + "fen": "rnbqkN1r/1pp1n1pp/8/p1b5/8/2P5/PP1pBPPP/RNBQ1K1R w kq a6 0 9" + }, + { + "move": "b6", + "fen": "rnbqkN1r/p1p1n1pp/1p6/2b5/8/2P5/PP1pBPPP/RNBQ1K1R w kq - 0 9" + }, + { + "move": "b5", + "fen": "rnbqkN1r/p1p1n1pp/8/1pb5/8/2P5/PP1pBPPP/RNBQ1K1R w kq b6 0 9" + }, + { + "move": "c6", + "fen": "rnbqkN1r/pp2n1pp/2p5/2b5/8/2P5/PP1pBPPP/RNBQ1K1R w kq - 0 9" + }, + { + "move": "Nd5", + "fen": "rnbqkN1r/ppp3pp/8/2bn4/8/2P5/PP1pBPPP/RNBQ1K1R w kq - 2 9" + }, + { + "move": "Nf5", + "fen": "rnbqkN1r/ppp3pp/8/2b2n2/8/2P5/PP1pBPPP/RNBQ1K1R w kq - 2 9" + }, + { + "move": "Nec6", + "fen": "rnbqkN1r/ppp3pp/2n5/2b5/8/2P5/PP1pBPPP/RNBQ1K1R w kq - 2 9" + }, + { + "move": "Ng6", + "fen": "rnbqkN1r/ppp3pp/6n1/2b5/8/2P5/PP1pBPPP/RNBQ1K1R w kq - 2 9" + }, + { + "move": "Ng8", + "fen": "rnbqkNnr/ppp3pp/8/2b5/8/2P5/PP1pBPPP/RNBQ1K1R w kq - 2 9" + }, + { + "move": "g6", + "fen": "rnbqkN1r/ppp1n2p/6p1/2b5/8/2P5/PP1pBPPP/RNBQ1K1R w kq - 0 9" + }, + { + "move": "g5", + "fen": "rnbqkN1r/ppp1n2p/8/2b3p1/8/2P5/PP1pBPPP/RNBQ1K1R w kq g6 0 9" + }, + { + "move": "h6", + "fen": "rnbqkN1r/ppp1n1p1/7p/2b5/8/2P5/PP1pBPPP/RNBQ1K1R w kq - 0 9" + }, + { + "move": "h5", + "fen": "rnbqkN1r/ppp1n1p1/8/2b4p/8/2P5/PP1pBPPP/RNBQ1K1R w kq h6 0 9" + }, + { + "move": "Na6", + "fen": "r1bqkN1r/ppp1n1pp/n7/2b5/8/2P5/PP1pBPPP/RNBQ1K1R w kq - 2 9" + }, + { + "move": "Nbc6", + "fen": "r1bqkN1r/ppp1n1pp/2n5/2b5/8/2P5/PP1pBPPP/RNBQ1K1R w kq - 2 9" + }, + { + "move": "Nd7", + "fen": "r1bqkN1r/pppnn1pp/8/2b5/8/2P5/PP1pBPPP/RNBQ1K1R w kq - 2 9" + }, + { + "move": "Bd7", + "fen": "rn1qkN1r/pppbn1pp/8/2b5/8/2P5/PP1pBPPP/RNBQ1K1R w kq - 2 9" + }, + { + "move": "Be6", + "fen": "rn1qkN1r/ppp1n1pp/4b3/2b5/8/2P5/PP1pBPPP/RNBQ1K1R w kq - 2 9" + }, + { + "move": "Bf5", + "fen": "rn1qkN1r/ppp1n1pp/8/2b2b2/8/2P5/PP1pBPPP/RNBQ1K1R w kq - 2 9" + }, + { + "move": "Bg4", + "fen": "rn1qkN1r/ppp1n1pp/8/2b5/6b1/2P5/PP1pBPPP/RNBQ1K1R w kq - 2 9" + }, + { + "move": "Bh3", + "fen": "rn1qkN1r/ppp1n1pp/8/2b5/8/2P4b/PP1pBPPP/RNBQ1K1R w kq - 2 9" + }, + { + "move": "Qd7", + "fen": "rnb1kN1r/pppqn1pp/8/2b5/8/2P5/PP1pBPPP/RNBQ1K1R w kq - 2 9" + }, + { + "move": "Qd6", + "fen": "rnb1kN1r/ppp1n1pp/3q4/2b5/8/2P5/PP1pBPPP/RNBQ1K1R w kq - 2 9" + }, + { + "move": "Qd5", + "fen": "rnb1kN1r/ppp1n1pp/8/2bq4/8/2P5/PP1pBPPP/RNBQ1K1R w kq - 2 9" + }, + { + "move": "Qd4", + "fen": "rnb1kN1r/ppp1n1pp/8/2b5/3q4/2P5/PP1pBPPP/RNBQ1K1R w kq - 2 9" + }, + { + "move": "Qd3", + "fen": "rnb1kN1r/ppp1n1pp/8/2b5/8/2Pq4/PP1pBPPP/RNBQ1K1R w kq - 2 9" + }, + { + "move": "Kf7", + "fen": "rnbq1N1r/ppp1nkpp/8/2b5/8/2P5/PP1pBPPP/RNBQ1K1R w - - 2 9" + }, + { + "move": "Kxf8", + "fen": "rnbq1k1r/ppp1n1pp/8/2b5/8/2P5/PP1pBPPP/RNBQ1K1R w - - 0 9" + }, + { + "move": "Rg8", + "fen": "rnbqkNr1/ppp1n1pp/8/2b5/8/2P5/PP1pBPPP/RNBQ1K1R w q - 2 9" + }, + { + "move": "Rxf8", + "fen": "rnbqkr2/ppp1n1pp/8/2b5/8/2P5/PP1pBPPP/RNBQ1K1R w q - 0 9" + } + ] + }, + { + "start": { + "fen": "rnbq1k1r/pp1Pbppp/2p5/8/2B5/8/PPP1N1PP/RNBQK1nR w KQ - 1 8", + "description": "Shouldn't be able to castle through opponent's piece." + }, + "expected": [ + { + "move": "Nd2", + "fen": "rnbq1k1r/pp1Pbppp/2p5/8/2B5/8/PPPNN1PP/R1BQK1nR b KQ - 2 8" + }, + { + "move": "Na3", + "fen": "rnbq1k1r/pp1Pbppp/2p5/8/2B5/N7/PPP1N1PP/R1BQK1nR b KQ - 2 8" + }, + { + "move": "Nbc3", + "fen": "rnbq1k1r/pp1Pbppp/2p5/8/2B5/2N5/PPP1N1PP/R1BQK1nR b KQ - 2 8" + }, + { + "move": "Bd2", + "fen": "rnbq1k1r/pp1Pbppp/2p5/8/2B5/8/PPPBN1PP/RN1QK1nR b KQ - 2 8" + }, + { + "move": "Be3", + "fen": "rnbq1k1r/pp1Pbppp/2p5/8/2B5/4B3/PPP1N1PP/RN1QK1nR b KQ - 2 8" + }, + { + "move": "Bf4", + "fen": "rnbq1k1r/pp1Pbppp/2p5/8/2B2B2/8/PPP1N1PP/RN1QK1nR b KQ - 2 8" + }, + { + "move": "Bg5", + "fen": "rnbq1k1r/pp1Pbppp/2p5/6B1/2B5/8/PPP1N1PP/RN1QK1nR b KQ - 2 8" + }, + { + "move": "Bh6", + "fen": "rnbq1k1r/pp1Pbppp/2p4B/8/2B5/8/PPP1N1PP/RN1QK1nR b KQ - 2 8" + }, + { + "move": "Qd2", + "fen": "rnbq1k1r/pp1Pbppp/2p5/8/2B5/8/PPPQN1PP/RNB1K1nR b KQ - 2 8" + }, + { + "move": "Qd3", + "fen": "rnbq1k1r/pp1Pbppp/2p5/8/2B5/3Q4/PPP1N1PP/RNB1K1nR b KQ - 2 8" + }, + { + "move": "Qd4", + "fen": "rnbq1k1r/pp1Pbppp/2p5/8/2BQ4/8/PPP1N1PP/RNB1K1nR b KQ - 2 8" + }, + { + "move": "Qd5", + "fen": "rnbq1k1r/pp1Pbppp/2p5/3Q4/2B5/8/PPP1N1PP/RNB1K1nR b KQ - 2 8" + }, + { + "move": "Qd6", + "fen": "rnbq1k1r/pp1Pbppp/2pQ4/8/2B5/8/PPP1N1PP/RNB1K1nR b KQ - 2 8" + }, + { + "move": "Kf1", + "fen": "rnbq1k1r/pp1Pbppp/2p5/8/2B5/8/PPP1N1PP/RNBQ1KnR b - - 2 8" + }, + { + "move": "Kd2", + "fen": "rnbq1k1r/pp1Pbppp/2p5/8/2B5/8/PPPKN1PP/RNBQ2nR b - - 2 8" + }, + { + "move": "Kf2", + "fen": "rnbq1k1r/pp1Pbppp/2p5/8/2B5/8/PPP1NKPP/RNBQ2nR b - - 2 8" + }, + { + "move": "Rxg1", + "fen": "rnbq1k1r/pp1Pbppp/2p5/8/2B5/8/PPP1N1PP/RNBQK1R1 b Q - 0 8" + }, + { + "move": "a3", + "fen": "rnbq1k1r/pp1Pbppp/2p5/8/2B5/P7/1PP1N1PP/RNBQK1nR b KQ - 0 8" + }, + { + "move": "a4", + "fen": "rnbq1k1r/pp1Pbppp/2p5/8/P1B5/8/1PP1N1PP/RNBQK1nR b KQ a3 0 8" + }, + { + "move": "b3", + "fen": "rnbq1k1r/pp1Pbppp/2p5/8/2B5/1P6/P1P1N1PP/RNBQK1nR b KQ - 0 8" + }, + { + "move": "b4", + "fen": "rnbq1k1r/pp1Pbppp/2p5/8/1PB5/8/P1P1N1PP/RNBQK1nR b KQ b3 0 8" + }, + { + "move": "c3", + "fen": "rnbq1k1r/pp1Pbppp/2p5/8/2B5/2P5/PP2N1PP/RNBQK1nR b KQ - 0 8" + }, + { + "move": "Nxg1", + "fen": "rnbq1k1r/pp1Pbppp/2p5/8/2B5/8/PPP3PP/RNBQK1NR b KQ - 0 8" + }, + { + "move": "Nec3", + "fen": "rnbq1k1r/pp1Pbppp/2p5/8/2B5/2N5/PPP3PP/RNBQK1nR b KQ - 2 8" + }, + { + "move": "Ng3", + "fen": "rnbq1k1r/pp1Pbppp/2p5/8/2B5/6N1/PPP3PP/RNBQK1nR b KQ - 2 8" + }, + { + "move": "Nd4", + "fen": "rnbq1k1r/pp1Pbppp/2p5/8/2BN4/8/PPP3PP/RNBQK1nR b KQ - 2 8" + }, + { + "move": "Nf4", + "fen": "rnbq1k1r/pp1Pbppp/2p5/8/2B2N2/8/PPP3PP/RNBQK1nR b KQ - 2 8" + }, + { + "move": "g3", + "fen": "rnbq1k1r/pp1Pbppp/2p5/8/2B5/6P1/PPP1N2P/RNBQK1nR b KQ - 0 8" + }, + { + "move": "g4", + "fen": "rnbq1k1r/pp1Pbppp/2p5/8/2B3P1/8/PPP1N2P/RNBQK1nR b KQ g3 0 8" + }, + { + "move": "h3", + "fen": "rnbq1k1r/pp1Pbppp/2p5/8/2B5/7P/PPP1N1P1/RNBQK1nR b KQ - 0 8" + }, + { + "move": "h4", + "fen": "rnbq1k1r/pp1Pbppp/2p5/8/2B4P/8/PPP1N1P1/RNBQK1nR b KQ h3 0 8" + }, + { + "move": "Bb3", + "fen": "rnbq1k1r/pp1Pbppp/2p5/8/8/1B6/PPP1N1PP/RNBQK1nR b KQ - 2 8" + }, + { + "move": "Bd3", + "fen": "rnbq1k1r/pp1Pbppp/2p5/8/8/3B4/PPP1N1PP/RNBQK1nR b KQ - 2 8" + }, + { + "move": "Bb5", + "fen": "rnbq1k1r/pp1Pbppp/2p5/1B6/8/8/PPP1N1PP/RNBQK1nR b KQ - 2 8" + }, + { + "move": "Ba6", + "fen": "rnbq1k1r/pp1Pbppp/B1p5/8/8/8/PPP1N1PP/RNBQK1nR b KQ - 2 8" + }, + { + "move": "Bd5", + "fen": "rnbq1k1r/pp1Pbppp/2p5/3B4/8/8/PPP1N1PP/RNBQK1nR b KQ - 2 8" + }, + { + "move": "Be6", + "fen": "rnbq1k1r/pp1Pbppp/2p1B3/8/8/8/PPP1N1PP/RNBQK1nR b KQ - 2 8" + }, + { + "move": "Bxf7", + "fen": "rnbq1k1r/pp1PbBpp/2p5/8/8/8/PPP1N1PP/RNBQK1nR b KQ - 0 8" + }, + { + "move": "dxc8=Q", + "fen": "rnQq1k1r/pp2bppp/2p5/8/2B5/8/PPP1N1PP/RNBQK1nR b KQ - 0 8" + }, + { + "move": "dxc8=R", + "fen": "rnRq1k1r/pp2bppp/2p5/8/2B5/8/PPP1N1PP/RNBQK1nR b KQ - 0 8" + }, + { + "move": "dxc8=N", + "fen": "rnNq1k1r/pp2bppp/2p5/8/2B5/8/PPP1N1PP/RNBQK1nR b KQ - 0 8" + }, + { + "move": "dxc8=B", + "fen": "rnBq1k1r/pp2bppp/2p5/8/2B5/8/PPP1N1PP/RNBQK1nR b KQ - 0 8" + } + ] + }, + { + "description": "Transpose of rnbq1k1r/pp1Pbppp/2p5/8/2B5/8/PPP1N1PP/RNBQK1nR w KQ - 1 8", + "start": { + "fen": "rnbqk1Nr/ppp1n1pp/8/2b5/8/2P5/PP1pBPPP/RNBQ1K1R b kq - 1 8", + "description": "Shouldn't be able to castle through opponent's piece." + }, + "expected": [ + { + "move": "dxc1=Q", + "fen": "rnbqk1Nr/ppp1n1pp/8/2b5/8/2P5/PP2BPPP/RNqQ1K1R w kq - 0 9" + }, + { + "move": "dxc1=R", + "fen": "rnbqk1Nr/ppp1n1pp/8/2b5/8/2P5/PP2BPPP/RNrQ1K1R w kq - 0 9" + }, + { + "move": "dxc1=N", + "fen": "rnbqk1Nr/ppp1n1pp/8/2b5/8/2P5/PP2BPPP/RNnQ1K1R w kq - 0 9" + }, + { + "move": "dxc1=B", + "fen": "rnbqk1Nr/ppp1n1pp/8/2b5/8/2P5/PP2BPPP/RNbQ1K1R w kq - 0 9" + }, + { + "move": "Bb4", + "fen": "rnbqk1Nr/ppp1n1pp/8/8/1b6/2P5/PP1pBPPP/RNBQ1K1R w kq - 2 9" + }, + { + "move": "Ba3", + "fen": "rnbqk1Nr/ppp1n1pp/8/8/8/b1P5/PP1pBPPP/RNBQ1K1R w kq - 2 9" + }, + { + "move": "Bd4", + "fen": "rnbqk1Nr/ppp1n1pp/8/8/3b4/2P5/PP1pBPPP/RNBQ1K1R w kq - 2 9" + }, + { + "move": "Be3", + "fen": "rnbqk1Nr/ppp1n1pp/8/8/8/2P1b3/PP1pBPPP/RNBQ1K1R w kq - 2 9" + }, + { + "move": "Bxf2", + "fen": "rnbqk1Nr/ppp1n1pp/8/8/8/2P5/PP1pBbPP/RNBQ1K1R w kq - 0 9" + }, + { + "move": "Bb6", + "fen": "rnbqk1Nr/ppp1n1pp/1b6/8/8/2P5/PP1pBPPP/RNBQ1K1R w kq - 2 9" + }, + { + "move": "Bd6", + "fen": "rnbqk1Nr/ppp1n1pp/3b4/8/8/2P5/PP1pBPPP/RNBQ1K1R w kq - 2 9" + }, + { + "move": "a6", + "fen": "rnbqk1Nr/1pp1n1pp/p7/2b5/8/2P5/PP1pBPPP/RNBQ1K1R w kq - 0 9" + }, + { + "move": "a5", + "fen": "rnbqk1Nr/1pp1n1pp/8/p1b5/8/2P5/PP1pBPPP/RNBQ1K1R w kq a6 0 9" + }, + { + "move": "b6", + "fen": "rnbqk1Nr/p1p1n1pp/1p6/2b5/8/2P5/PP1pBPPP/RNBQ1K1R w kq - 0 9" + }, + { + "move": "b5", + "fen": "rnbqk1Nr/p1p1n1pp/8/1pb5/8/2P5/PP1pBPPP/RNBQ1K1R w kq b6 0 9" + }, + { + "move": "c6", + "fen": "rnbqk1Nr/pp2n1pp/2p5/2b5/8/2P5/PP1pBPPP/RNBQ1K1R w kq - 0 9" + }, + { + "move": "Nd5", + "fen": "rnbqk1Nr/ppp3pp/8/2bn4/8/2P5/PP1pBPPP/RNBQ1K1R w kq - 2 9" + }, + { + "move": "Nf5", + "fen": "rnbqk1Nr/ppp3pp/8/2b2n2/8/2P5/PP1pBPPP/RNBQ1K1R w kq - 2 9" + }, + { + "move": "Nec6", + "fen": "rnbqk1Nr/ppp3pp/2n5/2b5/8/2P5/PP1pBPPP/RNBQ1K1R w kq - 2 9" + }, + { + "move": "Ng6", + "fen": "rnbqk1Nr/ppp3pp/6n1/2b5/8/2P5/PP1pBPPP/RNBQ1K1R w kq - 2 9" + }, + { + "move": "Nxg8", + "fen": "rnbqk1nr/ppp3pp/8/2b5/8/2P5/PP1pBPPP/RNBQ1K1R w kq - 0 9" + }, + { + "move": "g6", + "fen": "rnbqk1Nr/ppp1n2p/6p1/2b5/8/2P5/PP1pBPPP/RNBQ1K1R w kq - 0 9" + }, + { + "move": "g5", + "fen": "rnbqk1Nr/ppp1n2p/8/2b3p1/8/2P5/PP1pBPPP/RNBQ1K1R w kq g6 0 9" + }, + { + "move": "h6", + "fen": "rnbqk1Nr/ppp1n1p1/7p/2b5/8/2P5/PP1pBPPP/RNBQ1K1R w kq - 0 9" + }, + { + "move": "h5", + "fen": "rnbqk1Nr/ppp1n1p1/8/2b4p/8/2P5/PP1pBPPP/RNBQ1K1R w kq h6 0 9" + }, + { + "move": "Na6", + "fen": "r1bqk1Nr/ppp1n1pp/n7/2b5/8/2P5/PP1pBPPP/RNBQ1K1R w kq - 2 9" + }, + { + "move": "Nbc6", + "fen": "r1bqk1Nr/ppp1n1pp/2n5/2b5/8/2P5/PP1pBPPP/RNBQ1K1R w kq - 2 9" + }, + { + "move": "Nd7", + "fen": "r1bqk1Nr/pppnn1pp/8/2b5/8/2P5/PP1pBPPP/RNBQ1K1R w kq - 2 9" + }, + { + "move": "Bd7", + "fen": "rn1qk1Nr/pppbn1pp/8/2b5/8/2P5/PP1pBPPP/RNBQ1K1R w kq - 2 9" + }, + { + "move": "Be6", + "fen": "rn1qk1Nr/ppp1n1pp/4b3/2b5/8/2P5/PP1pBPPP/RNBQ1K1R w kq - 2 9" + }, + { + "move": "Bf5", + "fen": "rn1qk1Nr/ppp1n1pp/8/2b2b2/8/2P5/PP1pBPPP/RNBQ1K1R w kq - 2 9" + }, + { + "move": "Bg4", + "fen": "rn1qk1Nr/ppp1n1pp/8/2b5/6b1/2P5/PP1pBPPP/RNBQ1K1R w kq - 2 9" + }, + { + "move": "Bh3", + "fen": "rn1qk1Nr/ppp1n1pp/8/2b5/8/2P4b/PP1pBPPP/RNBQ1K1R w kq - 2 9" + }, + { + "move": "Qd7", + "fen": "rnb1k1Nr/pppqn1pp/8/2b5/8/2P5/PP1pBPPP/RNBQ1K1R w kq - 2 9" + }, + { + "move": "Qd6", + "fen": "rnb1k1Nr/ppp1n1pp/3q4/2b5/8/2P5/PP1pBPPP/RNBQ1K1R w kq - 2 9" + }, + { + "move": "Qd5", + "fen": "rnb1k1Nr/ppp1n1pp/8/2bq4/8/2P5/PP1pBPPP/RNBQ1K1R w kq - 2 9" + }, + { + "move": "Qd4", + "fen": "rnb1k1Nr/ppp1n1pp/8/2b5/3q4/2P5/PP1pBPPP/RNBQ1K1R w kq - 2 9" + }, + { + "move": "Qd3", + "fen": "rnb1k1Nr/ppp1n1pp/8/2b5/8/2Pq4/PP1pBPPP/RNBQ1K1R w kq - 2 9" + }, + { + "move": "Kd7", + "fen": "rnbq2Nr/pppkn1pp/8/2b5/8/2P5/PP1pBPPP/RNBQ1K1R w - - 2 9" + }, + { + "move": "Kf7", + "fen": "rnbq2Nr/ppp1nkpp/8/2b5/8/2P5/PP1pBPPP/RNBQ1K1R w - - 2 9" + }, + { + "move": "Kf8", + "fen": "rnbq1kNr/ppp1n1pp/8/2b5/8/2P5/PP1pBPPP/RNBQ1K1R w - - 2 9" + }, + { + "move": "Rxg8", + "fen": "rnbqk1r1/ppp1n1pp/8/2b5/8/2P5/PP1pBPPP/RNBQ1K1R w q - 0 9" + } + ] + }, + { + "start": { + "fen": "rnbqkN1r/pp2bppp/2p5/8/2B5/8/PPP1N1PP/RNBQK2R b KQkq - 1 8", + "description": "Can't castle through opposing piece." + }, + "expected": [ + { + "move": "c5", + "fen": "rnbqkN1r/pp2bppp/8/2p5/2B5/8/PPP1N1PP/RNBQK2R w KQkq - 0 9" + }, + { + "move": "a6", + "fen": "rnbqkN1r/1p2bppp/p1p5/8/2B5/8/PPP1N1PP/RNBQK2R w KQkq - 0 9" + }, + { + "move": "a5", + "fen": "rnbqkN1r/1p2bppp/2p5/p7/2B5/8/PPP1N1PP/RNBQK2R w KQkq a6 0 9" + }, + { + "move": "b6", + "fen": "rnbqkN1r/p3bppp/1pp5/8/2B5/8/PPP1N1PP/RNBQK2R w KQkq - 0 9" + }, + { + "move": "b5", + "fen": "rnbqkN1r/p3bppp/2p5/1p6/2B5/8/PPP1N1PP/RNBQK2R w KQkq b6 0 9" + }, + { + "move": "Bd6", + "fen": "rnbqkN1r/pp3ppp/2pb4/8/2B5/8/PPP1N1PP/RNBQK2R w KQkq - 2 9" + }, + { + "move": "Bc5", + "fen": "rnbqkN1r/pp3ppp/2p5/2b5/2B5/8/PPP1N1PP/RNBQK2R w KQkq - 2 9" + }, + { + "move": "Bb4+", + "fen": "rnbqkN1r/pp3ppp/2p5/8/1bB5/8/PPP1N1PP/RNBQK2R w KQkq - 2 9" + }, + { + "move": "Ba3", + "fen": "rnbqkN1r/pp3ppp/2p5/8/2B5/b7/PPP1N1PP/RNBQK2R w KQkq - 2 9" + }, + { + "move": "Bf6", + "fen": "rnbqkN1r/pp3ppp/2p2b2/8/2B5/8/PPP1N1PP/RNBQK2R w KQkq - 2 9" + }, + { + "move": "Bg5", + "fen": "rnbqkN1r/pp3ppp/2p5/6b1/2B5/8/PPP1N1PP/RNBQK2R w KQkq - 2 9" + }, + { + "move": "Bh4+", + "fen": "rnbqkN1r/pp3ppp/2p5/8/2B4b/8/PPP1N1PP/RNBQK2R w KQkq - 2 9" + }, + { + "move": "Bxf8", + "fen": "rnbqkb1r/pp3ppp/2p5/8/2B5/8/PPP1N1PP/RNBQK2R w KQkq - 0 9" + }, + { + "move": "f6", + "fen": "rnbqkN1r/pp2b1pp/2p2p2/8/2B5/8/PPP1N1PP/RNBQK2R w KQkq - 0 9" + }, + { + "move": "f5", + "fen": "rnbqkN1r/pp2b1pp/2p5/5p2/2B5/8/PPP1N1PP/RNBQK2R w KQkq f6 0 9" + }, + { + "move": "g6", + "fen": "rnbqkN1r/pp2bp1p/2p3p1/8/2B5/8/PPP1N1PP/RNBQK2R w KQkq - 0 9" + }, + { + "move": "g5", + "fen": "rnbqkN1r/pp2bp1p/2p5/6p1/2B5/8/PPP1N1PP/RNBQK2R w KQkq g6 0 9" + }, + { + "move": "h6", + "fen": "rnbqkN1r/pp2bpp1/2p4p/8/2B5/8/PPP1N1PP/RNBQK2R w KQkq - 0 9" + }, + { + "move": "h5", + "fen": "rnbqkN1r/pp2bpp1/2p5/7p/2B5/8/PPP1N1PP/RNBQK2R w KQkq h6 0 9" + }, + { + "move": "Na6", + "fen": "r1bqkN1r/pp2bppp/n1p5/8/2B5/8/PPP1N1PP/RNBQK2R w KQkq - 2 9" + }, + { + "move": "Nd7", + "fen": "r1bqkN1r/pp1nbppp/2p5/8/2B5/8/PPP1N1PP/RNBQK2R w KQkq - 2 9" + }, + { + "move": "Bd7", + "fen": "rn1qkN1r/pp1bbppp/2p5/8/2B5/8/PPP1N1PP/RNBQK2R w KQkq - 2 9" + }, + { + "move": "Be6", + "fen": "rn1qkN1r/pp2bppp/2p1b3/8/2B5/8/PPP1N1PP/RNBQK2R w KQkq - 2 9" + }, + { + "move": "Bf5", + "fen": "rn1qkN1r/pp2bppp/2p5/5b2/2B5/8/PPP1N1PP/RNBQK2R w KQkq - 2 9" + }, + { + "move": "Bg4", + "fen": "rn1qkN1r/pp2bppp/2p5/8/2B3b1/8/PPP1N1PP/RNBQK2R w KQkq - 2 9" + }, + { + "move": "Bh3", + "fen": "rn1qkN1r/pp2bppp/2p5/8/2B5/7b/PPP1N1PP/RNBQK2R w KQkq - 2 9" + }, + { + "move": "Qc7", + "fen": "rnb1kN1r/ppq1bppp/2p5/8/2B5/8/PPP1N1PP/RNBQK2R w KQkq - 2 9" + }, + { + "move": "Qb6", + "fen": "rnb1kN1r/pp2bppp/1qp5/8/2B5/8/PPP1N1PP/RNBQK2R w KQkq - 2 9" + }, + { + "move": "Qa5+", + "fen": "rnb1kN1r/pp2bppp/2p5/q7/2B5/8/PPP1N1PP/RNBQK2R w KQkq - 2 9" + }, + { + "move": "Qd7", + "fen": "rnb1kN1r/pp1qbppp/2p5/8/2B5/8/PPP1N1PP/RNBQK2R w KQkq - 2 9" + }, + { + "move": "Qd6", + "fen": "rnb1kN1r/pp2bppp/2pq4/8/2B5/8/PPP1N1PP/RNBQK2R w KQkq - 2 9" + }, + { + "move": "Qd5", + "fen": "rnb1kN1r/pp2bppp/2p5/3q4/2B5/8/PPP1N1PP/RNBQK2R w KQkq - 2 9" + }, + { + "move": "Qd4", + "fen": "rnb1kN1r/pp2bppp/2p5/8/2Bq4/8/PPP1N1PP/RNBQK2R w KQkq - 2 9" + }, + { + "move": "Qd3", + "fen": "rnb1kN1r/pp2bppp/2p5/8/2B5/3q4/PPP1N1PP/RNBQK2R w KQkq - 2 9" + }, + { + "move": "Qd2+", + "fen": "rnb1kN1r/pp2bppp/2p5/8/2B5/8/PPPqN1PP/RNBQK2R w KQkq - 2 9" + }, + { + "move": "Qxd1+", + "fen": "rnb1kN1r/pp2bppp/2p5/8/2B5/8/PPP1N1PP/RNBqK2R w KQkq - 0 9" + }, + { + "move": "Kxf8", + "fen": "rnbq1k1r/pp2bppp/2p5/8/2B5/8/PPP1N1PP/RNBQK2R w KQ - 0 9" + }, + { + "move": "Rg8", + "fen": "rnbqkNr1/pp2bppp/2p5/8/2B5/8/PPP1N1PP/RNBQK2R w KQq - 2 9" + }, + { + "move": "Rxf8", + "fen": "rnbqkr2/pp2bppp/2p5/8/2B5/8/PPP1N1PP/RNBQK2R w KQq - 0 9" + } + ] + }, + { + "description": "Transpose of rnbqkN1r/pp2bppp/2p5/8/2B5/8/PPP1N1PP/RNBQK2R b KQkq - 1 8", + "start": { + "fen": "rnbqk2r/ppp1n1pp/8/2b5/8/2P5/PP2BPPP/RNBQKn1R w KQkq - 1 8", + "description": "Can't castle through opposing piece." + }, + "expected": [ + { + "move": "Nd2", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/8/2P5/PP1NBPPP/R1BQKn1R b KQkq - 2 8" + }, + { + "move": "Na3", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/8/N1P5/PP2BPPP/R1BQKn1R b KQkq - 2 8" + }, + { + "move": "Bd2", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/8/2P5/PP1BBPPP/RN1QKn1R b KQkq - 2 8" + }, + { + "move": "Be3", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/8/2P1B3/PP2BPPP/RN1QKn1R b KQkq - 2 8" + }, + { + "move": "Bf4", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/5B2/2P5/PP2BPPP/RN1QKn1R b KQkq - 2 8" + }, + { + "move": "Bg5", + "fen": "rnbqk2r/ppp1n1pp/8/2b3B1/8/2P5/PP2BPPP/RN1QKn1R b KQkq - 2 8" + }, + { + "move": "Bh6", + "fen": "rnbqk2r/ppp1n1pp/7B/2b5/8/2P5/PP2BPPP/RN1QKn1R b KQkq - 2 8" + }, + { + "move": "Qc2", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/8/2P5/PPQ1BPPP/RNB1Kn1R b KQkq - 2 8" + }, + { + "move": "Qb3", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/8/1QP5/PP2BPPP/RNB1Kn1R b KQkq - 2 8" + }, + { + "move": "Qa4+", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/Q7/2P5/PP2BPPP/RNB1Kn1R b KQkq - 2 8" + }, + { + "move": "Qd2", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/8/2P5/PP1QBPPP/RNB1Kn1R b KQkq - 2 8" + }, + { + "move": "Qd3", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/8/2PQ4/PP2BPPP/RNB1Kn1R b KQkq - 2 8" + }, + { + "move": "Qd4", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/3Q4/2P5/PP2BPPP/RNB1Kn1R b KQkq - 2 8" + }, + { + "move": "Qd5", + "fen": "rnbqk2r/ppp1n1pp/8/2bQ4/8/2P5/PP2BPPP/RNB1Kn1R b KQkq - 2 8" + }, + { + "move": "Qd6", + "fen": "rnbqk2r/ppp1n1pp/3Q4/2b5/8/2P5/PP2BPPP/RNB1Kn1R b KQkq - 2 8" + }, + { + "move": "Qd7+", + "fen": "rnbqk2r/pppQn1pp/8/2b5/8/2P5/PP2BPPP/RNB1Kn1R b KQkq - 2 8" + }, + { + "move": "Qxd8+", + "fen": "rnbQk2r/ppp1n1pp/8/2b5/8/2P5/PP2BPPP/RNB1Kn1R b KQkq - 0 8" + }, + { + "move": "Kxf1", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/8/2P5/PP2BPPP/RNBQ1K1R b kq - 0 8" + }, + { + "move": "Rg1", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/8/2P5/PP2BPPP/RNBQKnR1 b Qkq - 2 8" + }, + { + "move": "Rxf1", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/8/2P5/PP2BPPP/RNBQKR2 b Qkq - 0 8" + }, + { + "move": "a3", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/8/P1P5/1P2BPPP/RNBQKn1R b KQkq - 0 8" + }, + { + "move": "a4", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/P7/2P5/1P2BPPP/RNBQKn1R b KQkq a3 0 8" + }, + { + "move": "b3", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/8/1PP5/P3BPPP/RNBQKn1R b KQkq - 0 8" + }, + { + "move": "b4", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/1P6/2P5/P3BPPP/RNBQKn1R b KQkq b3 0 8" + }, + { + "move": "Bxf1", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/8/2P5/PP3PPP/RNBQKB1R b KQkq - 0 8" + }, + { + "move": "Bd3", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/8/2PB4/PP3PPP/RNBQKn1R b KQkq - 2 8" + }, + { + "move": "Bc4", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/2B5/2P5/PP3PPP/RNBQKn1R b KQkq - 2 8" + }, + { + "move": "Bb5+", + "fen": "rnbqk2r/ppp1n1pp/8/1Bb5/8/2P5/PP3PPP/RNBQKn1R b KQkq - 2 8" + }, + { + "move": "Ba6", + "fen": "rnbqk2r/ppp1n1pp/B7/2b5/8/2P5/PP3PPP/RNBQKn1R b KQkq - 2 8" + }, + { + "move": "Bf3", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/8/2P2B2/PP3PPP/RNBQKn1R b KQkq - 2 8" + }, + { + "move": "Bg4", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/6B1/2P5/PP3PPP/RNBQKn1R b KQkq - 2 8" + }, + { + "move": "Bh5+", + "fen": "rnbqk2r/ppp1n1pp/8/2b4B/8/2P5/PP3PPP/RNBQKn1R b KQkq - 2 8" + }, + { + "move": "f3", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/8/2P2P2/PP2B1PP/RNBQKn1R b KQkq - 0 8" + }, + { + "move": "f4", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/5P2/2P5/PP2B1PP/RNBQKn1R b KQkq f3 0 8" + }, + { + "move": "g3", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/8/2P3P1/PP2BP1P/RNBQKn1R b KQkq - 0 8" + }, + { + "move": "g4", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/6P1/2P5/PP2BP1P/RNBQKn1R b KQkq g3 0 8" + }, + { + "move": "h3", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/8/2P4P/PP2BPP1/RNBQKn1R b KQkq - 0 8" + }, + { + "move": "h4", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/7P/2P5/PP2BPP1/RNBQKn1R b KQkq h3 0 8" + }, + { + "move": "c4", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/2P5/8/PP2BPPP/RNBQKn1R b KQkq - 0 8" + } + ] + }, + { + "start": { + "fen": "rnbqk1Nr/pp2bppp/2p5/8/2B5/8/PPP1N1PP/RNBQK2R b KQkq - 1 8", + "description": "Can't castle through opposing piece." + }, + "expected": [ + { + "move": "c5", + "fen": "rnbqk1Nr/pp2bppp/8/2p5/2B5/8/PPP1N1PP/RNBQK2R w KQkq - 0 9" + }, + { + "move": "a6", + "fen": "rnbqk1Nr/1p2bppp/p1p5/8/2B5/8/PPP1N1PP/RNBQK2R w KQkq - 0 9" + }, + { + "move": "a5", + "fen": "rnbqk1Nr/1p2bppp/2p5/p7/2B5/8/PPP1N1PP/RNBQK2R w KQkq a6 0 9" + }, + { + "move": "b6", + "fen": "rnbqk1Nr/p3bppp/1pp5/8/2B5/8/PPP1N1PP/RNBQK2R w KQkq - 0 9" + }, + { + "move": "b5", + "fen": "rnbqk1Nr/p3bppp/2p5/1p6/2B5/8/PPP1N1PP/RNBQK2R w KQkq b6 0 9" + }, + { + "move": "Bd6", + "fen": "rnbqk1Nr/pp3ppp/2pb4/8/2B5/8/PPP1N1PP/RNBQK2R w KQkq - 2 9" + }, + { + "move": "Bc5", + "fen": "rnbqk1Nr/pp3ppp/2p5/2b5/2B5/8/PPP1N1PP/RNBQK2R w KQkq - 2 9" + }, + { + "move": "Bb4+", + "fen": "rnbqk1Nr/pp3ppp/2p5/8/1bB5/8/PPP1N1PP/RNBQK2R w KQkq - 2 9" + }, + { + "move": "Ba3", + "fen": "rnbqk1Nr/pp3ppp/2p5/8/2B5/b7/PPP1N1PP/RNBQK2R w KQkq - 2 9" + }, + { + "move": "Bf6", + "fen": "rnbqk1Nr/pp3ppp/2p2b2/8/2B5/8/PPP1N1PP/RNBQK2R w KQkq - 2 9" + }, + { + "move": "Bg5", + "fen": "rnbqk1Nr/pp3ppp/2p5/6b1/2B5/8/PPP1N1PP/RNBQK2R w KQkq - 2 9" + }, + { + "move": "Bh4+", + "fen": "rnbqk1Nr/pp3ppp/2p5/8/2B4b/8/PPP1N1PP/RNBQK2R w KQkq - 2 9" + }, + { + "move": "Bf8", + "fen": "rnbqkbNr/pp3ppp/2p5/8/2B5/8/PPP1N1PP/RNBQK2R w KQkq - 2 9" + }, + { + "move": "f6", + "fen": "rnbqk1Nr/pp2b1pp/2p2p2/8/2B5/8/PPP1N1PP/RNBQK2R w KQkq - 0 9" + }, + { + "move": "f5", + "fen": "rnbqk1Nr/pp2b1pp/2p5/5p2/2B5/8/PPP1N1PP/RNBQK2R w KQkq f6 0 9" + }, + { + "move": "g6", + "fen": "rnbqk1Nr/pp2bp1p/2p3p1/8/2B5/8/PPP1N1PP/RNBQK2R w KQkq - 0 9" + }, + { + "move": "g5", + "fen": "rnbqk1Nr/pp2bp1p/2p5/6p1/2B5/8/PPP1N1PP/RNBQK2R w KQkq g6 0 9" + }, + { + "move": "h6", + "fen": "rnbqk1Nr/pp2bpp1/2p4p/8/2B5/8/PPP1N1PP/RNBQK2R w KQkq - 0 9" + }, + { + "move": "h5", + "fen": "rnbqk1Nr/pp2bpp1/2p5/7p/2B5/8/PPP1N1PP/RNBQK2R w KQkq h6 0 9" + }, + { + "move": "Na6", + "fen": "r1bqk1Nr/pp2bppp/n1p5/8/2B5/8/PPP1N1PP/RNBQK2R w KQkq - 2 9" + }, + { + "move": "Nd7", + "fen": "r1bqk1Nr/pp1nbppp/2p5/8/2B5/8/PPP1N1PP/RNBQK2R w KQkq - 2 9" + }, + { + "move": "Bd7", + "fen": "rn1qk1Nr/pp1bbppp/2p5/8/2B5/8/PPP1N1PP/RNBQK2R w KQkq - 2 9" + }, + { + "move": "Be6", + "fen": "rn1qk1Nr/pp2bppp/2p1b3/8/2B5/8/PPP1N1PP/RNBQK2R w KQkq - 2 9" + }, + { + "move": "Bf5", + "fen": "rn1qk1Nr/pp2bppp/2p5/5b2/2B5/8/PPP1N1PP/RNBQK2R w KQkq - 2 9" + }, + { + "move": "Bg4", + "fen": "rn1qk1Nr/pp2bppp/2p5/8/2B3b1/8/PPP1N1PP/RNBQK2R w KQkq - 2 9" + }, + { + "move": "Bh3", + "fen": "rn1qk1Nr/pp2bppp/2p5/8/2B5/7b/PPP1N1PP/RNBQK2R w KQkq - 2 9" + }, + { + "move": "Qc7", + "fen": "rnb1k1Nr/ppq1bppp/2p5/8/2B5/8/PPP1N1PP/RNBQK2R w KQkq - 2 9" + }, + { + "move": "Qb6", + "fen": "rnb1k1Nr/pp2bppp/1qp5/8/2B5/8/PPP1N1PP/RNBQK2R w KQkq - 2 9" + }, + { + "move": "Qa5+", + "fen": "rnb1k1Nr/pp2bppp/2p5/q7/2B5/8/PPP1N1PP/RNBQK2R w KQkq - 2 9" + }, + { + "move": "Qd7", + "fen": "rnb1k1Nr/pp1qbppp/2p5/8/2B5/8/PPP1N1PP/RNBQK2R w KQkq - 2 9" + }, + { + "move": "Qd6", + "fen": "rnb1k1Nr/pp2bppp/2pq4/8/2B5/8/PPP1N1PP/RNBQK2R w KQkq - 2 9" + }, + { + "move": "Qd5", + "fen": "rnb1k1Nr/pp2bppp/2p5/3q4/2B5/8/PPP1N1PP/RNBQK2R w KQkq - 2 9" + }, + { + "move": "Qd4", + "fen": "rnb1k1Nr/pp2bppp/2p5/8/2Bq4/8/PPP1N1PP/RNBQK2R w KQkq - 2 9" + }, + { + "move": "Qd3", + "fen": "rnb1k1Nr/pp2bppp/2p5/8/2B5/3q4/PPP1N1PP/RNBQK2R w KQkq - 2 9" + }, + { + "move": "Qd2+", + "fen": "rnb1k1Nr/pp2bppp/2p5/8/2B5/8/PPPqN1PP/RNBQK2R w KQkq - 2 9" + }, + { + "move": "Qxd1+", + "fen": "rnb1k1Nr/pp2bppp/2p5/8/2B5/8/PPP1N1PP/RNBqK2R w KQkq - 0 9" + }, + { + "move": "Kf8", + "fen": "rnbq1kNr/pp2bppp/2p5/8/2B5/8/PPP1N1PP/RNBQK2R w KQ - 2 9" + }, + { + "move": "Rxg8", + "fen": "rnbqk1r1/pp2bppp/2p5/8/2B5/8/PPP1N1PP/RNBQK2R w KQq - 0 9" + } + ] + }, + { + "description": "Transpose of rnbqk1Nr/pp2bppp/2p5/8/2B5/8/PPP1N1PP/RNBQK2R b KQkq - 1 8", + "start": { + "fen": "rnbqk2r/ppp1n1pp/8/2b5/8/2P5/PP2BPPP/RNBQK1nR w KQkq - 1 8", + "description": "Can't castle through opposing piece." + }, + "expected": [ + { + "move": "Nd2", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/8/2P5/PP1NBPPP/R1BQK1nR b KQkq - 2 8" + }, + { + "move": "Na3", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/8/N1P5/PP2BPPP/R1BQK1nR b KQkq - 2 8" + }, + { + "move": "Bd2", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/8/2P5/PP1BBPPP/RN1QK1nR b KQkq - 2 8" + }, + { + "move": "Be3", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/8/2P1B3/PP2BPPP/RN1QK1nR b KQkq - 2 8" + }, + { + "move": "Bf4", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/5B2/2P5/PP2BPPP/RN1QK1nR b KQkq - 2 8" + }, + { + "move": "Bg5", + "fen": "rnbqk2r/ppp1n1pp/8/2b3B1/8/2P5/PP2BPPP/RN1QK1nR b KQkq - 2 8" + }, + { + "move": "Bh6", + "fen": "rnbqk2r/ppp1n1pp/7B/2b5/8/2P5/PP2BPPP/RN1QK1nR b KQkq - 2 8" + }, + { + "move": "Qc2", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/8/2P5/PPQ1BPPP/RNB1K1nR b KQkq - 2 8" + }, + { + "move": "Qb3", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/8/1QP5/PP2BPPP/RNB1K1nR b KQkq - 2 8" + }, + { + "move": "Qa4+", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/Q7/2P5/PP2BPPP/RNB1K1nR b KQkq - 2 8" + }, + { + "move": "Qd2", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/8/2P5/PP1QBPPP/RNB1K1nR b KQkq - 2 8" + }, + { + "move": "Qd3", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/8/2PQ4/PP2BPPP/RNB1K1nR b KQkq - 2 8" + }, + { + "move": "Qd4", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/3Q4/2P5/PP2BPPP/RNB1K1nR b KQkq - 2 8" + }, + { + "move": "Qd5", + "fen": "rnbqk2r/ppp1n1pp/8/2bQ4/8/2P5/PP2BPPP/RNB1K1nR b KQkq - 2 8" + }, + { + "move": "Qd6", + "fen": "rnbqk2r/ppp1n1pp/3Q4/2b5/8/2P5/PP2BPPP/RNB1K1nR b KQkq - 2 8" + }, + { + "move": "Qd7+", + "fen": "rnbqk2r/pppQn1pp/8/2b5/8/2P5/PP2BPPP/RNB1K1nR b KQkq - 2 8" + }, + { + "move": "Qxd8+", + "fen": "rnbQk2r/ppp1n1pp/8/2b5/8/2P5/PP2BPPP/RNB1K1nR b KQkq - 0 8" + }, + { + "move": "Kf1", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/8/2P5/PP2BPPP/RNBQ1KnR b kq - 2 8" + }, + { + "move": "Rxg1", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/8/2P5/PP2BPPP/RNBQK1R1 b Qkq - 0 8" + }, + { + "move": "a3", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/8/P1P5/1P2BPPP/RNBQK1nR b KQkq - 0 8" + }, + { + "move": "a4", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/P7/2P5/1P2BPPP/RNBQK1nR b KQkq a3 0 8" + }, + { + "move": "b3", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/8/1PP5/P3BPPP/RNBQK1nR b KQkq - 0 8" + }, + { + "move": "b4", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/1P6/2P5/P3BPPP/RNBQK1nR b KQkq b3 0 8" + }, + { + "move": "Bf1", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/8/2P5/PP3PPP/RNBQKBnR b KQkq - 2 8" + }, + { + "move": "Bd3", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/8/2PB4/PP3PPP/RNBQK1nR b KQkq - 2 8" + }, + { + "move": "Bc4", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/2B5/2P5/PP3PPP/RNBQK1nR b KQkq - 2 8" + }, + { + "move": "Bb5+", + "fen": "rnbqk2r/ppp1n1pp/8/1Bb5/8/2P5/PP3PPP/RNBQK1nR b KQkq - 2 8" + }, + { + "move": "Ba6", + "fen": "rnbqk2r/ppp1n1pp/B7/2b5/8/2P5/PP3PPP/RNBQK1nR b KQkq - 2 8" + }, + { + "move": "Bf3", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/8/2P2B2/PP3PPP/RNBQK1nR b KQkq - 2 8" + }, + { + "move": "Bg4", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/6B1/2P5/PP3PPP/RNBQK1nR b KQkq - 2 8" + }, + { + "move": "Bh5+", + "fen": "rnbqk2r/ppp1n1pp/8/2b4B/8/2P5/PP3PPP/RNBQK1nR b KQkq - 2 8" + }, + { + "move": "f3", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/8/2P2P2/PP2B1PP/RNBQK1nR b KQkq - 0 8" + }, + { + "move": "f4", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/5P2/2P5/PP2B1PP/RNBQK1nR b KQkq f3 0 8" + }, + { + "move": "g3", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/8/2P3P1/PP2BP1P/RNBQK1nR b KQkq - 0 8" + }, + { + "move": "g4", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/6P1/2P5/PP2BP1P/RNBQK1nR b KQkq g3 0 8" + }, + { + "move": "h3", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/8/2P4P/PP2BPP1/RNBQK1nR b KQkq - 0 8" + }, + { + "move": "h4", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/7P/2P5/PP2BPP1/RNBQK1nR b KQkq h3 0 8" + }, + { + "move": "c4", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/2P5/8/PP2BPPP/RNBQK1nR b KQkq - 0 8" + } + ] + }, + { + "start": { + "fen": "r2Nk2r/pp2bppp/2p5/8/2B5/8/PPP1N1PP/RNBQK2R b KQkq - 1 8", + "description": "Can't castle through opposing piece." + }, + "expected": [ + { + "move": "c5", + "fen": "r2Nk2r/pp2bppp/8/2p5/2B5/8/PPP1N1PP/RNBQK2R w KQkq - 0 9" + }, + { + "move": "a6", + "fen": "r2Nk2r/1p2bppp/p1p5/8/2B5/8/PPP1N1PP/RNBQK2R w KQkq - 0 9" + }, + { + "move": "a5", + "fen": "r2Nk2r/1p2bppp/2p5/p7/2B5/8/PPP1N1PP/RNBQK2R w KQkq a6 0 9" + }, + { + "move": "b6", + "fen": "r2Nk2r/p3bppp/1pp5/8/2B5/8/PPP1N1PP/RNBQK2R w KQkq - 0 9" + }, + { + "move": "b5", + "fen": "r2Nk2r/p3bppp/2p5/1p6/2B5/8/PPP1N1PP/RNBQK2R w KQkq b6 0 9" + }, + { + "move": "Bd6", + "fen": "r2Nk2r/pp3ppp/2pb4/8/2B5/8/PPP1N1PP/RNBQK2R w KQkq - 2 9" + }, + { + "move": "Bc5", + "fen": "r2Nk2r/pp3ppp/2p5/2b5/2B5/8/PPP1N1PP/RNBQK2R w KQkq - 2 9" + }, + { + "move": "Bb4+", + "fen": "r2Nk2r/pp3ppp/2p5/8/1bB5/8/PPP1N1PP/RNBQK2R w KQkq - 2 9" + }, + { + "move": "Ba3", + "fen": "r2Nk2r/pp3ppp/2p5/8/2B5/b7/PPP1N1PP/RNBQK2R w KQkq - 2 9" + }, + { + "move": "Bf6", + "fen": "r2Nk2r/pp3ppp/2p2b2/8/2B5/8/PPP1N1PP/RNBQK2R w KQkq - 2 9" + }, + { + "move": "Bg5", + "fen": "r2Nk2r/pp3ppp/2p5/6b1/2B5/8/PPP1N1PP/RNBQK2R w KQkq - 2 9" + }, + { + "move": "Bh4+", + "fen": "r2Nk2r/pp3ppp/2p5/8/2B4b/8/PPP1N1PP/RNBQK2R w KQkq - 2 9" + }, + { + "move": "Bxd8", + "fen": "r2bk2r/pp3ppp/2p5/8/2B5/8/PPP1N1PP/RNBQK2R w KQkq - 0 9" + }, + { + "move": "Bf8", + "fen": "r2Nkb1r/pp3ppp/2p5/8/2B5/8/PPP1N1PP/RNBQK2R w KQkq - 2 9" + }, + { + "move": "f6", + "fen": "r2Nk2r/pp2b1pp/2p2p2/8/2B5/8/PPP1N1PP/RNBQK2R w KQkq - 0 9" + }, + { + "move": "f5", + "fen": "r2Nk2r/pp2b1pp/2p5/5p2/2B5/8/PPP1N1PP/RNBQK2R w KQkq f6 0 9" + }, + { + "move": "g6", + "fen": "r2Nk2r/pp2bp1p/2p3p1/8/2B5/8/PPP1N1PP/RNBQK2R w KQkq - 0 9" + }, + { + "move": "g5", + "fen": "r2Nk2r/pp2bp1p/2p5/6p1/2B5/8/PPP1N1PP/RNBQK2R w KQkq g6 0 9" + }, + { + "move": "h6", + "fen": "r2Nk2r/pp2bpp1/2p4p/8/2B5/8/PPP1N1PP/RNBQK2R w KQkq - 0 9" + }, + { + "move": "h5", + "fen": "r2Nk2r/pp2bpp1/2p5/7p/2B5/8/PPP1N1PP/RNBQK2R w KQkq h6 0 9" + }, + { + "move": "Rb8", + "fen": "1r1Nk2r/pp2bppp/2p5/8/2B5/8/PPP1N1PP/RNBQK2R w KQk - 2 9" + }, + { + "move": "Rc8", + "fen": "2rNk2r/pp2bppp/2p5/8/2B5/8/PPP1N1PP/RNBQK2R w KQk - 2 9" + }, + { + "move": "Rxd8", + "fen": "3rk2r/pp2bppp/2p5/8/2B5/8/PPP1N1PP/RNBQK2R w KQk - 0 9" + }, + { + "move": "Kf8", + "fen": "r2N1k1r/pp2bppp/2p5/8/2B5/8/PPP1N1PP/RNBQK2R w KQ - 2 9" + }, + { + "move": "O-O", + "fen": "r2N1rk1/pp2bppp/2p5/8/2B5/8/PPP1N1PP/RNBQK2R w KQ - 2 9" + }, + { + "move": "Rg8", + "fen": "r2Nk1r1/pp2bppp/2p5/8/2B5/8/PPP1N1PP/RNBQK2R w KQq - 2 9" + }, + { + "move": "Rf8", + "fen": "r2Nkr2/pp2bppp/2p5/8/2B5/8/PPP1N1PP/RNBQK2R w KQq - 2 9" + } + ] + }, + { + "description": "Transpose of r2Nk2r/pp2bppp/2p5/8/2B5/8/PPP1N1PP/RNBQK2R b KQkq - 1 8", + "start": { + "fen": "rnbqk2r/ppp1n1pp/8/2b5/8/2P5/PP2BPPP/R2nK2R w KQkq - 1 8", + "description": "Can't castle through opposing piece." + }, + "expected": [ + { + "move": "Rb1", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/8/2P5/PP2BPPP/1R1nK2R b Kkq - 2 8" + }, + { + "move": "Rc1", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/8/2P5/PP2BPPP/2RnK2R b Kkq - 2 8" + }, + { + "move": "Rxd1", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/8/2P5/PP2BPPP/3RK2R b Kkq - 0 8" + }, + { + "move": "Kf1", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/8/2P5/PP2BPPP/R2n1K1R b kq - 2 8" + }, + { + "move": "O-O", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/8/2P5/PP2BPPP/R2n1RK1 b kq - 2 8" + }, + { + "move": "Rg1", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/8/2P5/PP2BPPP/R2nK1R1 b Qkq - 2 8" + }, + { + "move": "Rf1", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/8/2P5/PP2BPPP/R2nKR2 b Qkq - 2 8" + }, + { + "move": "a3", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/8/P1P5/1P2BPPP/R2nK2R b KQkq - 0 8" + }, + { + "move": "a4", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/P7/2P5/1P2BPPP/R2nK2R b KQkq a3 0 8" + }, + { + "move": "b3", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/8/1PP5/P3BPPP/R2nK2R b KQkq - 0 8" + }, + { + "move": "b4", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/1P6/2P5/P3BPPP/R2nK2R b KQkq b3 0 8" + }, + { + "move": "Bxd1", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/8/2P5/PP3PPP/R2BK2R b KQkq - 0 8" + }, + { + "move": "Bf1", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/8/2P5/PP3PPP/R2nKB1R b KQkq - 2 8" + }, + { + "move": "Bd3", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/8/2PB4/PP3PPP/R2nK2R b KQkq - 2 8" + }, + { + "move": "Bc4", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/2B5/2P5/PP3PPP/R2nK2R b KQkq - 2 8" + }, + { + "move": "Bb5+", + "fen": "rnbqk2r/ppp1n1pp/8/1Bb5/8/2P5/PP3PPP/R2nK2R b KQkq - 2 8" + }, + { + "move": "Ba6", + "fen": "rnbqk2r/ppp1n1pp/B7/2b5/8/2P5/PP3PPP/R2nK2R b KQkq - 2 8" + }, + { + "move": "Bf3", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/8/2P2B2/PP3PPP/R2nK2R b KQkq - 2 8" + }, + { + "move": "Bg4", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/6B1/2P5/PP3PPP/R2nK2R b KQkq - 2 8" + }, + { + "move": "Bh5+", + "fen": "rnbqk2r/ppp1n1pp/8/2b4B/8/2P5/PP3PPP/R2nK2R b KQkq - 2 8" + }, + { + "move": "f3", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/8/2P2P2/PP2B1PP/R2nK2R b KQkq - 0 8" + }, + { + "move": "f4", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/5P2/2P5/PP2B1PP/R2nK2R b KQkq f3 0 8" + }, + { + "move": "g3", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/8/2P3P1/PP2BP1P/R2nK2R b KQkq - 0 8" + }, + { + "move": "g4", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/6P1/2P5/PP2BP1P/R2nK2R b KQkq g3 0 8" + }, + { + "move": "h3", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/8/2P4P/PP2BPP1/R2nK2R b KQkq - 0 8" + }, + { + "move": "h4", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/7P/2P5/PP2BPP1/R2nK2R b KQkq h3 0 8" + }, + { + "move": "c4", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/2P5/8/PP2BPPP/R2nK2R b KQkq - 0 8" + } + ] + }, + { + "start": { + "fen": "r1N1k2r/pp2bppp/2p5/8/2B5/8/PPP1N1PP/RNBQK2R b KQkq - 1 8", + "description": "Can't castle through opposing piece." + }, + "expected": [ + { + "move": "c5", + "fen": "r1N1k2r/pp2bppp/8/2p5/2B5/8/PPP1N1PP/RNBQK2R w KQkq - 0 9" + }, + { + "move": "a6", + "fen": "r1N1k2r/1p2bppp/p1p5/8/2B5/8/PPP1N1PP/RNBQK2R w KQkq - 0 9" + }, + { + "move": "a5", + "fen": "r1N1k2r/1p2bppp/2p5/p7/2B5/8/PPP1N1PP/RNBQK2R w KQkq a6 0 9" + }, + { + "move": "b6", + "fen": "r1N1k2r/p3bppp/1pp5/8/2B5/8/PPP1N1PP/RNBQK2R w KQkq - 0 9" + }, + { + "move": "b5", + "fen": "r1N1k2r/p3bppp/2p5/1p6/2B5/8/PPP1N1PP/RNBQK2R w KQkq b6 0 9" + }, + { + "move": "Bd6", + "fen": "r1N1k2r/pp3ppp/2pb4/8/2B5/8/PPP1N1PP/RNBQK2R w KQkq - 2 9" + }, + { + "move": "Bc5", + "fen": "r1N1k2r/pp3ppp/2p5/2b5/2B5/8/PPP1N1PP/RNBQK2R w KQkq - 2 9" + }, + { + "move": "Bb4+", + "fen": "r1N1k2r/pp3ppp/2p5/8/1bB5/8/PPP1N1PP/RNBQK2R w KQkq - 2 9" + }, + { + "move": "Ba3", + "fen": "r1N1k2r/pp3ppp/2p5/8/2B5/b7/PPP1N1PP/RNBQK2R w KQkq - 2 9" + }, + { + "move": "Bf6", + "fen": "r1N1k2r/pp3ppp/2p2b2/8/2B5/8/PPP1N1PP/RNBQK2R w KQkq - 2 9" + }, + { + "move": "Bg5", + "fen": "r1N1k2r/pp3ppp/2p5/6b1/2B5/8/PPP1N1PP/RNBQK2R w KQkq - 2 9" + }, + { + "move": "Bh4+", + "fen": "r1N1k2r/pp3ppp/2p5/8/2B4b/8/PPP1N1PP/RNBQK2R w KQkq - 2 9" + }, + { + "move": "Bd8", + "fen": "r1Nbk2r/pp3ppp/2p5/8/2B5/8/PPP1N1PP/RNBQK2R w KQkq - 2 9" + }, + { + "move": "Bf8", + "fen": "r1N1kb1r/pp3ppp/2p5/8/2B5/8/PPP1N1PP/RNBQK2R w KQkq - 2 9" + }, + { + "move": "f6", + "fen": "r1N1k2r/pp2b1pp/2p2p2/8/2B5/8/PPP1N1PP/RNBQK2R w KQkq - 0 9" + }, + { + "move": "f5", + "fen": "r1N1k2r/pp2b1pp/2p5/5p2/2B5/8/PPP1N1PP/RNBQK2R w KQkq f6 0 9" + }, + { + "move": "g6", + "fen": "r1N1k2r/pp2bp1p/2p3p1/8/2B5/8/PPP1N1PP/RNBQK2R w KQkq - 0 9" + }, + { + "move": "g5", + "fen": "r1N1k2r/pp2bp1p/2p5/6p1/2B5/8/PPP1N1PP/RNBQK2R w KQkq g6 0 9" + }, + { + "move": "h6", + "fen": "r1N1k2r/pp2bpp1/2p4p/8/2B5/8/PPP1N1PP/RNBQK2R w KQkq - 0 9" + }, + { + "move": "h5", + "fen": "r1N1k2r/pp2bpp1/2p5/7p/2B5/8/PPP1N1PP/RNBQK2R w KQkq h6 0 9" + }, + { + "move": "Rb8", + "fen": "1rN1k2r/pp2bppp/2p5/8/2B5/8/PPP1N1PP/RNBQK2R w KQk - 2 9" + }, + { + "move": "Rxc8", + "fen": "2r1k2r/pp2bppp/2p5/8/2B5/8/PPP1N1PP/RNBQK2R w KQk - 0 9" + }, + { + "move": "Kf8", + "fen": "r1N2k1r/pp2bppp/2p5/8/2B5/8/PPP1N1PP/RNBQK2R w KQ - 2 9" + }, + { + "move": "O-O", + "fen": "r1N2rk1/pp2bppp/2p5/8/2B5/8/PPP1N1PP/RNBQK2R w KQ - 2 9" + }, + { + "move": "Rg8", + "fen": "r1N1k1r1/pp2bppp/2p5/8/2B5/8/PPP1N1PP/RNBQK2R w KQq - 2 9" + }, + { + "move": "Rf8", + "fen": "r1N1kr2/pp2bppp/2p5/8/2B5/8/PPP1N1PP/RNBQK2R w KQq - 2 9" + } + ] + }, + { + "description": "Transpose of r1N1k2r/pp2bppp/2p5/8/2B5/8/PPP1N1PP/RNBQK2R b KQkq - 1 8", + "start": { + "fen": "rnbqk2r/ppp1n1pp/8/2b5/8/2P5/PP2BPPP/R1n1K2R w KQkq - 1 8", + "description": "Can't castle through opposing piece." + }, + "expected": [ + { + "move": "Rb1", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/8/2P5/PP2BPPP/1Rn1K2R b Kkq - 2 8" + }, + { + "move": "Rxc1", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/8/2P5/PP2BPPP/2R1K2R b Kkq - 0 8" + }, + { + "move": "Kf1", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/8/2P5/PP2BPPP/R1n2K1R b kq - 2 8" + }, + { + "move": "O-O", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/8/2P5/PP2BPPP/R1n2RK1 b kq - 2 8" + }, + { + "move": "Rg1", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/8/2P5/PP2BPPP/R1n1K1R1 b Qkq - 2 8" + }, + { + "move": "Rf1", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/8/2P5/PP2BPPP/R1n1KR2 b Qkq - 2 8" + }, + { + "move": "a3", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/8/P1P5/1P2BPPP/R1n1K2R b KQkq - 0 8" + }, + { + "move": "a4", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/P7/2P5/1P2BPPP/R1n1K2R b KQkq a3 0 8" + }, + { + "move": "b3", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/8/1PP5/P3BPPP/R1n1K2R b KQkq - 0 8" + }, + { + "move": "b4", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/1P6/2P5/P3BPPP/R1n1K2R b KQkq b3 0 8" + }, + { + "move": "Bd1", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/8/2P5/PP3PPP/R1nBK2R b KQkq - 2 8" + }, + { + "move": "Bf1", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/8/2P5/PP3PPP/R1n1KB1R b KQkq - 2 8" + }, + { + "move": "Bd3", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/8/2PB4/PP3PPP/R1n1K2R b KQkq - 2 8" + }, + { + "move": "Bc4", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/2B5/2P5/PP3PPP/R1n1K2R b KQkq - 2 8" + }, + { + "move": "Bb5+", + "fen": "rnbqk2r/ppp1n1pp/8/1Bb5/8/2P5/PP3PPP/R1n1K2R b KQkq - 2 8" + }, + { + "move": "Ba6", + "fen": "rnbqk2r/ppp1n1pp/B7/2b5/8/2P5/PP3PPP/R1n1K2R b KQkq - 2 8" + }, + { + "move": "Bf3", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/8/2P2B2/PP3PPP/R1n1K2R b KQkq - 2 8" + }, + { + "move": "Bg4", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/6B1/2P5/PP3PPP/R1n1K2R b KQkq - 2 8" + }, + { + "move": "Bh5+", + "fen": "rnbqk2r/ppp1n1pp/8/2b4B/8/2P5/PP3PPP/R1n1K2R b KQkq - 2 8" + }, + { + "move": "f3", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/8/2P2P2/PP2B1PP/R1n1K2R b KQkq - 0 8" + }, + { + "move": "f4", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/5P2/2P5/PP2B1PP/R1n1K2R b KQkq f3 0 8" + }, + { + "move": "g3", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/8/2P3P1/PP2BP1P/R1n1K2R b KQkq - 0 8" + }, + { + "move": "g4", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/6P1/2P5/PP2BP1P/R1n1K2R b KQkq g3 0 8" + }, + { + "move": "h3", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/8/2P4P/PP2BPP1/R1n1K2R b KQkq - 0 8" + }, + { + "move": "h4", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/7P/2P5/PP2BPP1/R1n1K2R b KQkq h3 0 8" + }, + { + "move": "c4", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/2P5/8/PP2BPPP/R1n1K2R b KQkq - 0 8" + } + ] + }, + { + "start": { + "fen": "rN2k2r/pp2bppp/2p5/8/2B5/8/PPP1N1PP/RNBQK2R b KQkq - 1 8", + "description": "Can't castle through opposing piece." + }, + "expected": [ + { + "move": "c5", + "fen": "rN2k2r/pp2bppp/8/2p5/2B5/8/PPP1N1PP/RNBQK2R w KQkq - 0 9" + }, + { + "move": "a6", + "fen": "rN2k2r/1p2bppp/p1p5/8/2B5/8/PPP1N1PP/RNBQK2R w KQkq - 0 9" + }, + { + "move": "a5", + "fen": "rN2k2r/1p2bppp/2p5/p7/2B5/8/PPP1N1PP/RNBQK2R w KQkq a6 0 9" + }, + { + "move": "b6", + "fen": "rN2k2r/p3bppp/1pp5/8/2B5/8/PPP1N1PP/RNBQK2R w KQkq - 0 9" + }, + { + "move": "b5", + "fen": "rN2k2r/p3bppp/2p5/1p6/2B5/8/PPP1N1PP/RNBQK2R w KQkq b6 0 9" + }, + { + "move": "Bd6", + "fen": "rN2k2r/pp3ppp/2pb4/8/2B5/8/PPP1N1PP/RNBQK2R w KQkq - 2 9" + }, + { + "move": "Bc5", + "fen": "rN2k2r/pp3ppp/2p5/2b5/2B5/8/PPP1N1PP/RNBQK2R w KQkq - 2 9" + }, + { + "move": "Bb4+", + "fen": "rN2k2r/pp3ppp/2p5/8/1bB5/8/PPP1N1PP/RNBQK2R w KQkq - 2 9" + }, + { + "move": "Ba3", + "fen": "rN2k2r/pp3ppp/2p5/8/2B5/b7/PPP1N1PP/RNBQK2R w KQkq - 2 9" + }, + { + "move": "Bf6", + "fen": "rN2k2r/pp3ppp/2p2b2/8/2B5/8/PPP1N1PP/RNBQK2R w KQkq - 2 9" + }, + { + "move": "Bg5", + "fen": "rN2k2r/pp3ppp/2p5/6b1/2B5/8/PPP1N1PP/RNBQK2R w KQkq - 2 9" + }, + { + "move": "Bh4+", + "fen": "rN2k2r/pp3ppp/2p5/8/2B4b/8/PPP1N1PP/RNBQK2R w KQkq - 2 9" + }, + { + "move": "Bd8", + "fen": "rN1bk2r/pp3ppp/2p5/8/2B5/8/PPP1N1PP/RNBQK2R w KQkq - 2 9" + }, + { + "move": "Bf8", + "fen": "rN2kb1r/pp3ppp/2p5/8/2B5/8/PPP1N1PP/RNBQK2R w KQkq - 2 9" + }, + { + "move": "f6", + "fen": "rN2k2r/pp2b1pp/2p2p2/8/2B5/8/PPP1N1PP/RNBQK2R w KQkq - 0 9" + }, + { + "move": "f5", + "fen": "rN2k2r/pp2b1pp/2p5/5p2/2B5/8/PPP1N1PP/RNBQK2R w KQkq f6 0 9" + }, + { + "move": "g6", + "fen": "rN2k2r/pp2bp1p/2p3p1/8/2B5/8/PPP1N1PP/RNBQK2R w KQkq - 0 9" + }, + { + "move": "g5", + "fen": "rN2k2r/pp2bp1p/2p5/6p1/2B5/8/PPP1N1PP/RNBQK2R w KQkq g6 0 9" + }, + { + "move": "h6", + "fen": "rN2k2r/pp2bpp1/2p4p/8/2B5/8/PPP1N1PP/RNBQK2R w KQkq - 0 9" + }, + { + "move": "h5", + "fen": "rN2k2r/pp2bpp1/2p5/7p/2B5/8/PPP1N1PP/RNBQK2R w KQkq h6 0 9" + }, + { + "move": "Rxb8", + "fen": "1r2k2r/pp2bppp/2p5/8/2B5/8/PPP1N1PP/RNBQK2R w KQk - 0 9" + }, + { + "move": "Kf8", + "fen": "rN3k1r/pp2bppp/2p5/8/2B5/8/PPP1N1PP/RNBQK2R w KQ - 2 9" + }, + { + "move": "O-O", + "fen": "rN3rk1/pp2bppp/2p5/8/2B5/8/PPP1N1PP/RNBQK2R w KQ - 2 9" + }, + { + "move": "Rg8", + "fen": "rN2k1r1/pp2bppp/2p5/8/2B5/8/PPP1N1PP/RNBQK2R w KQq - 2 9" + }, + { + "move": "Rf8", + "fen": "rN2kr2/pp2bppp/2p5/8/2B5/8/PPP1N1PP/RNBQK2R w KQq - 2 9" + } + ] + }, + { + "description": "Transpose of rN2k2r/pp2bppp/2p5/8/2B5/8/PPP1N1PP/RNBQK2R b KQkq - 1 8", + "start": { + "fen": "rnbqk2r/ppp1n1pp/8/2b5/8/2P5/PP2BPPP/Rn2K2R w KQkq - 1 8", + "description": "Can't castle through opposing piece." + }, + "expected": [ + { + "move": "Rxb1", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/8/2P5/PP2BPPP/1R2K2R b Kkq - 0 8" + }, + { + "move": "Kf1", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/8/2P5/PP2BPPP/Rn3K1R b kq - 2 8" + }, + { + "move": "O-O", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/8/2P5/PP2BPPP/Rn3RK1 b kq - 2 8" + }, + { + "move": "Rg1", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/8/2P5/PP2BPPP/Rn2K1R1 b Qkq - 2 8" + }, + { + "move": "Rf1", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/8/2P5/PP2BPPP/Rn2KR2 b Qkq - 2 8" + }, + { + "move": "a3", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/8/P1P5/1P2BPPP/Rn2K2R b KQkq - 0 8" + }, + { + "move": "a4", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/P7/2P5/1P2BPPP/Rn2K2R b KQkq a3 0 8" + }, + { + "move": "b3", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/8/1PP5/P3BPPP/Rn2K2R b KQkq - 0 8" + }, + { + "move": "b4", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/1P6/2P5/P3BPPP/Rn2K2R b KQkq b3 0 8" + }, + { + "move": "Bd1", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/8/2P5/PP3PPP/Rn1BK2R b KQkq - 2 8" + }, + { + "move": "Bf1", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/8/2P5/PP3PPP/Rn2KB1R b KQkq - 2 8" + }, + { + "move": "Bd3", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/8/2PB4/PP3PPP/Rn2K2R b KQkq - 2 8" + }, + { + "move": "Bc4", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/2B5/2P5/PP3PPP/Rn2K2R b KQkq - 2 8" + }, + { + "move": "Bb5+", + "fen": "rnbqk2r/ppp1n1pp/8/1Bb5/8/2P5/PP3PPP/Rn2K2R b KQkq - 2 8" + }, + { + "move": "Ba6", + "fen": "rnbqk2r/ppp1n1pp/B7/2b5/8/2P5/PP3PPP/Rn2K2R b KQkq - 2 8" + }, + { + "move": "Bf3", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/8/2P2B2/PP3PPP/Rn2K2R b KQkq - 2 8" + }, + { + "move": "Bg4", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/6B1/2P5/PP3PPP/Rn2K2R b KQkq - 2 8" + }, + { + "move": "Bh5+", + "fen": "rnbqk2r/ppp1n1pp/8/2b4B/8/2P5/PP3PPP/Rn2K2R b KQkq - 2 8" + }, + { + "move": "f3", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/8/2P2P2/PP2B1PP/Rn2K2R b KQkq - 0 8" + }, + { + "move": "f4", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/5P2/2P5/PP2B1PP/Rn2K2R b KQkq f3 0 8" + }, + { + "move": "g3", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/8/2P3P1/PP2BP1P/Rn2K2R b KQkq - 0 8" + }, + { + "move": "g4", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/6P1/2P5/PP2BP1P/Rn2K2R b KQkq g3 0 8" + }, + { + "move": "h3", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/8/2P4P/PP2BPP1/Rn2K2R b KQkq - 0 8" + }, + { + "move": "h4", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/7P/2P5/PP2BPP1/Rn2K2R b KQkq h3 0 8" + }, + { + "move": "c4", + "fen": "rnbqk2r/ppp1n1pp/8/2b5/2P5/8/PP2BPPP/Rn2K2R b KQkq - 0 8" + } + ] + }, + { + "start": { + "fen": "r3k2r/pp2bppp/2p5/8/2B5/8/PPP1N1PP/Rn2K2R w KQkq - 1 8", + "description": "Can't castle through opposing piece." + }, + "expected": [ + { + "move": "Rxb1", + "fen": "r3k2r/pp2bppp/2p5/8/2B5/8/PPP1N1PP/1R2K2R b Kkq - 0 8" + }, + { + "move": "Kd1", + "fen": "r3k2r/pp2bppp/2p5/8/2B5/8/PPP1N1PP/Rn1K3R b kq - 2 8" + }, + { + "move": "Kf1", + "fen": "r3k2r/pp2bppp/2p5/8/2B5/8/PPP1N1PP/Rn3K1R b kq - 2 8" + }, + { + "move": "Kf2", + "fen": "r3k2r/pp2bppp/2p5/8/2B5/8/PPP1NKPP/Rn5R b kq - 2 8" + }, + { + "move": "O-O", + "fen": "r3k2r/pp2bppp/2p5/8/2B5/8/PPP1N1PP/Rn3RK1 b kq - 2 8" + }, + { + "move": "Rg1", + "fen": "r3k2r/pp2bppp/2p5/8/2B5/8/PPP1N1PP/Rn2K1R1 b Qkq - 2 8" + }, + { + "move": "Rf1", + "fen": "r3k2r/pp2bppp/2p5/8/2B5/8/PPP1N1PP/Rn2KR2 b Qkq - 2 8" + }, + { + "move": "a3", + "fen": "r3k2r/pp2bppp/2p5/8/2B5/P7/1PP1N1PP/Rn2K2R b KQkq - 0 8" + }, + { + "move": "a4", + "fen": "r3k2r/pp2bppp/2p5/8/P1B5/8/1PP1N1PP/Rn2K2R b KQkq a3 0 8" + }, + { + "move": "b3", + "fen": "r3k2r/pp2bppp/2p5/8/2B5/1P6/P1P1N1PP/Rn2K2R b KQkq - 0 8" + }, + { + "move": "b4", + "fen": "r3k2r/pp2bppp/2p5/8/1PB5/8/P1P1N1PP/Rn2K2R b KQkq b3 0 8" + }, + { + "move": "c3", + "fen": "r3k2r/pp2bppp/2p5/8/2B5/2P5/PP2N1PP/Rn2K2R b KQkq - 0 8" + }, + { + "move": "Nc1", + "fen": "r3k2r/pp2bppp/2p5/8/2B5/8/PPP3PP/RnN1K2R b KQkq - 2 8" + }, + { + "move": "Ng1", + "fen": "r3k2r/pp2bppp/2p5/8/2B5/8/PPP3PP/Rn2K1NR b KQkq - 2 8" + }, + { + "move": "Nc3", + "fen": "r3k2r/pp2bppp/2p5/8/2B5/2N5/PPP3PP/Rn2K2R b KQkq - 2 8" + }, + { + "move": "Ng3", + "fen": "r3k2r/pp2bppp/2p5/8/2B5/6N1/PPP3PP/Rn2K2R b KQkq - 2 8" + }, + { + "move": "Nd4", + "fen": "r3k2r/pp2bppp/2p5/8/2BN4/8/PPP3PP/Rn2K2R b KQkq - 2 8" + }, + { + "move": "Nf4", + "fen": "r3k2r/pp2bppp/2p5/8/2B2N2/8/PPP3PP/Rn2K2R b KQkq - 2 8" + }, + { + "move": "g3", + "fen": "r3k2r/pp2bppp/2p5/8/2B5/6P1/PPP1N2P/Rn2K2R b KQkq - 0 8" + }, + { + "move": "g4", + "fen": "r3k2r/pp2bppp/2p5/8/2B3P1/8/PPP1N2P/Rn2K2R b KQkq g3 0 8" + }, + { + "move": "h3", + "fen": "r3k2r/pp2bppp/2p5/8/2B5/7P/PPP1N1P1/Rn2K2R b KQkq - 0 8" + }, + { + "move": "h4", + "fen": "r3k2r/pp2bppp/2p5/8/2B4P/8/PPP1N1P1/Rn2K2R b KQkq h3 0 8" + }, + { + "move": "Bb3", + "fen": "r3k2r/pp2bppp/2p5/8/8/1B6/PPP1N1PP/Rn2K2R b KQkq - 2 8" + }, + { + "move": "Bd3", + "fen": "r3k2r/pp2bppp/2p5/8/8/3B4/PPP1N1PP/Rn2K2R b KQkq - 2 8" + }, + { + "move": "Bb5", + "fen": "r3k2r/pp2bppp/2p5/1B6/8/8/PPP1N1PP/Rn2K2R b KQkq - 2 8" + }, + { + "move": "Ba6", + "fen": "r3k2r/pp2bppp/B1p5/8/8/8/PPP1N1PP/Rn2K2R b KQkq - 2 8" + }, + { + "move": "Bd5", + "fen": "r3k2r/pp2bppp/2p5/3B4/8/8/PPP1N1PP/Rn2K2R b KQkq - 2 8" + }, + { + "move": "Be6", + "fen": "r3k2r/pp2bppp/2p1B3/8/8/8/PPP1N1PP/Rn2K2R b KQkq - 2 8" + }, + { + "move": "Bxf7+", + "fen": "r3k2r/pp2bBpp/2p5/8/8/8/PPP1N1PP/Rn2K2R b KQkq - 0 8" + } + ] + }, + { + "description": "Transpose of r3k2r/pp2bppp/2p5/8/2B5/8/PPP1N1PP/Rn2K2R w KQkq - 1 8", + "start": { + "fen": "rN2k2r/ppp1n1pp/8/2b5/8/2P5/PP2BPPP/R3K2R b KQkq - 1 8", + "description": "Can't castle through opposing piece." + }, + "expected": [ + { + "move": "Bb4", + "fen": "rN2k2r/ppp1n1pp/8/8/1b6/2P5/PP2BPPP/R3K2R w KQkq - 2 9" + }, + { + "move": "Ba3", + "fen": "rN2k2r/ppp1n1pp/8/8/8/b1P5/PP2BPPP/R3K2R w KQkq - 2 9" + }, + { + "move": "Bd4", + "fen": "rN2k2r/ppp1n1pp/8/8/3b4/2P5/PP2BPPP/R3K2R w KQkq - 2 9" + }, + { + "move": "Be3", + "fen": "rN2k2r/ppp1n1pp/8/8/8/2P1b3/PP2BPPP/R3K2R w KQkq - 2 9" + }, + { + "move": "Bxf2+", + "fen": "rN2k2r/ppp1n1pp/8/8/8/2P5/PP2BbPP/R3K2R w KQkq - 0 9" + }, + { + "move": "Bb6", + "fen": "rN2k2r/ppp1n1pp/1b6/8/8/2P5/PP2BPPP/R3K2R w KQkq - 2 9" + }, + { + "move": "Bd6", + "fen": "rN2k2r/ppp1n1pp/3b4/8/8/2P5/PP2BPPP/R3K2R w KQkq - 2 9" + }, + { + "move": "a6", + "fen": "rN2k2r/1pp1n1pp/p7/2b5/8/2P5/PP2BPPP/R3K2R w KQkq - 0 9" + }, + { + "move": "a5", + "fen": "rN2k2r/1pp1n1pp/8/p1b5/8/2P5/PP2BPPP/R3K2R w KQkq a6 0 9" + }, + { + "move": "b6", + "fen": "rN2k2r/p1p1n1pp/1p6/2b5/8/2P5/PP2BPPP/R3K2R w KQkq - 0 9" + }, + { + "move": "b5", + "fen": "rN2k2r/p1p1n1pp/8/1pb5/8/2P5/PP2BPPP/R3K2R w KQkq b6 0 9" + }, + { + "move": "c6", + "fen": "rN2k2r/pp2n1pp/2p5/2b5/8/2P5/PP2BPPP/R3K2R w KQkq - 0 9" + }, + { + "move": "Nd5", + "fen": "rN2k2r/ppp3pp/8/2bn4/8/2P5/PP2BPPP/R3K2R w KQkq - 2 9" + }, + { + "move": "Nf5", + "fen": "rN2k2r/ppp3pp/8/2b2n2/8/2P5/PP2BPPP/R3K2R w KQkq - 2 9" + }, + { + "move": "Nc6", + "fen": "rN2k2r/ppp3pp/2n5/2b5/8/2P5/PP2BPPP/R3K2R w KQkq - 2 9" + }, + { + "move": "Ng6", + "fen": "rN2k2r/ppp3pp/6n1/2b5/8/2P5/PP2BPPP/R3K2R w KQkq - 2 9" + }, + { + "move": "Nc8", + "fen": "rNn1k2r/ppp3pp/8/2b5/8/2P5/PP2BPPP/R3K2R w KQkq - 2 9" + }, + { + "move": "Ng8", + "fen": "rN2k1nr/ppp3pp/8/2b5/8/2P5/PP2BPPP/R3K2R w KQkq - 2 9" + }, + { + "move": "g6", + "fen": "rN2k2r/ppp1n2p/6p1/2b5/8/2P5/PP2BPPP/R3K2R w KQkq - 0 9" + }, + { + "move": "g5", + "fen": "rN2k2r/ppp1n2p/8/2b3p1/8/2P5/PP2BPPP/R3K2R w KQkq g6 0 9" + }, + { + "move": "h6", + "fen": "rN2k2r/ppp1n1p1/7p/2b5/8/2P5/PP2BPPP/R3K2R w KQkq - 0 9" + }, + { + "move": "h5", + "fen": "rN2k2r/ppp1n1p1/8/2b4p/8/2P5/PP2BPPP/R3K2R w KQkq h6 0 9" + }, + { + "move": "Rxb8", + "fen": "1r2k2r/ppp1n1pp/8/2b5/8/2P5/PP2BPPP/R3K2R w KQk - 0 9" + }, + { + "move": "Kf7", + "fen": "rN5r/ppp1nkpp/8/2b5/8/2P5/PP2BPPP/R3K2R w KQ - 2 9" + }, + { + "move": "Kd8", + "fen": "rN1k3r/ppp1n1pp/8/2b5/8/2P5/PP2BPPP/R3K2R w KQ - 2 9" + }, + { + "move": "Kf8", + "fen": "rN3k1r/ppp1n1pp/8/2b5/8/2P5/PP2BPPP/R3K2R w KQ - 2 9" + }, + { + "move": "O-O", + "fen": "rN3rk1/ppp1n1pp/8/2b5/8/2P5/PP2BPPP/R3K2R w KQ - 2 9" + }, + { + "move": "Rg8", + "fen": "rN2k1r1/ppp1n1pp/8/2b5/8/2P5/PP2BPPP/R3K2R w KQq - 2 9" + }, + { + "move": "Rf8", + "fen": "rN2kr2/ppp1n1pp/8/2b5/8/2P5/PP2BPPP/R3K2R w KQq - 2 9" + } + ] + }, + { + "start": { + "fen": "r3k2r/pp2bppp/2p5/8/2B5/8/PPP1N1PP/R1n1K2R w KQkq - 1 8", + "description": "Can't castle through opposing piece." + }, + "expected": [ + { + "move": "Rb1", + "fen": "r3k2r/pp2bppp/2p5/8/2B5/8/PPP1N1PP/1Rn1K2R b Kkq - 2 8" + }, + { + "move": "Rxc1", + "fen": "r3k2r/pp2bppp/2p5/8/2B5/8/PPP1N1PP/2R1K2R b Kkq - 0 8" + }, + { + "move": "Kd1", + "fen": "r3k2r/pp2bppp/2p5/8/2B5/8/PPP1N1PP/R1nK3R b kq - 2 8" + }, + { + "move": "Kf1", + "fen": "r3k2r/pp2bppp/2p5/8/2B5/8/PPP1N1PP/R1n2K1R b kq - 2 8" + }, + { + "move": "Kd2", + "fen": "r3k2r/pp2bppp/2p5/8/2B5/8/PPPKN1PP/R1n4R b kq - 2 8" + }, + { + "move": "Kf2", + "fen": "r3k2r/pp2bppp/2p5/8/2B5/8/PPP1NKPP/R1n4R b kq - 2 8" + }, + { + "move": "O-O", + "fen": "r3k2r/pp2bppp/2p5/8/2B5/8/PPP1N1PP/R1n2RK1 b kq - 2 8" + }, + { + "move": "Rg1", + "fen": "r3k2r/pp2bppp/2p5/8/2B5/8/PPP1N1PP/R1n1K1R1 b Qkq - 2 8" + }, + { + "move": "Rf1", + "fen": "r3k2r/pp2bppp/2p5/8/2B5/8/PPP1N1PP/R1n1KR2 b Qkq - 2 8" + }, + { + "move": "a3", + "fen": "r3k2r/pp2bppp/2p5/8/2B5/P7/1PP1N1PP/R1n1K2R b KQkq - 0 8" + }, + { + "move": "a4", + "fen": "r3k2r/pp2bppp/2p5/8/P1B5/8/1PP1N1PP/R1n1K2R b KQkq a3 0 8" + }, + { + "move": "b3", + "fen": "r3k2r/pp2bppp/2p5/8/2B5/1P6/P1P1N1PP/R1n1K2R b KQkq - 0 8" + }, + { + "move": "b4", + "fen": "r3k2r/pp2bppp/2p5/8/1PB5/8/P1P1N1PP/R1n1K2R b KQkq b3 0 8" + }, + { + "move": "c3", + "fen": "r3k2r/pp2bppp/2p5/8/2B5/2P5/PP2N1PP/R1n1K2R b KQkq - 0 8" + }, + { + "move": "Nxc1", + "fen": "r3k2r/pp2bppp/2p5/8/2B5/8/PPP3PP/R1N1K2R b KQkq - 0 8" + }, + { + "move": "Ng1", + "fen": "r3k2r/pp2bppp/2p5/8/2B5/8/PPP3PP/R1n1K1NR b KQkq - 2 8" + }, + { + "move": "Nc3", + "fen": "r3k2r/pp2bppp/2p5/8/2B5/2N5/PPP3PP/R1n1K2R b KQkq - 2 8" + }, + { + "move": "Ng3", + "fen": "r3k2r/pp2bppp/2p5/8/2B5/6N1/PPP3PP/R1n1K2R b KQkq - 2 8" + }, + { + "move": "Nd4", + "fen": "r3k2r/pp2bppp/2p5/8/2BN4/8/PPP3PP/R1n1K2R b KQkq - 2 8" + }, + { + "move": "Nf4", + "fen": "r3k2r/pp2bppp/2p5/8/2B2N2/8/PPP3PP/R1n1K2R b KQkq - 2 8" + }, + { + "move": "g3", + "fen": "r3k2r/pp2bppp/2p5/8/2B5/6P1/PPP1N2P/R1n1K2R b KQkq - 0 8" + }, + { + "move": "g4", + "fen": "r3k2r/pp2bppp/2p5/8/2B3P1/8/PPP1N2P/R1n1K2R b KQkq g3 0 8" + }, + { + "move": "h3", + "fen": "r3k2r/pp2bppp/2p5/8/2B5/7P/PPP1N1P1/R1n1K2R b KQkq - 0 8" + }, + { + "move": "h4", + "fen": "r3k2r/pp2bppp/2p5/8/2B4P/8/PPP1N1P1/R1n1K2R b KQkq h3 0 8" + }, + { + "move": "Bb3", + "fen": "r3k2r/pp2bppp/2p5/8/8/1B6/PPP1N1PP/R1n1K2R b KQkq - 2 8" + }, + { + "move": "Bd3", + "fen": "r3k2r/pp2bppp/2p5/8/8/3B4/PPP1N1PP/R1n1K2R b KQkq - 2 8" + }, + { + "move": "Bb5", + "fen": "r3k2r/pp2bppp/2p5/1B6/8/8/PPP1N1PP/R1n1K2R b KQkq - 2 8" + }, + { + "move": "Ba6", + "fen": "r3k2r/pp2bppp/B1p5/8/8/8/PPP1N1PP/R1n1K2R b KQkq - 2 8" + }, + { + "move": "Bd5", + "fen": "r3k2r/pp2bppp/2p5/3B4/8/8/PPP1N1PP/R1n1K2R b KQkq - 2 8" + }, + { + "move": "Be6", + "fen": "r3k2r/pp2bppp/2p1B3/8/8/8/PPP1N1PP/R1n1K2R b KQkq - 2 8" + }, + { + "move": "Bxf7+", + "fen": "r3k2r/pp2bBpp/2p5/8/8/8/PPP1N1PP/R1n1K2R b KQkq - 0 8" + } + ] + }, + { + "description": "Transpose of r3k2r/pp2bppp/2p5/8/2B5/8/PPP1N1PP/R1n1K2R w KQkq - 1 8", + "start": { + "fen": "r1N1k2r/ppp1n1pp/8/2b5/8/2P5/PP2BPPP/R3K2R b KQkq - 1 8", + "description": "Can't castle through opposing piece." + }, + "expected": [ + { + "move": "Bb4", + "fen": "r1N1k2r/ppp1n1pp/8/8/1b6/2P5/PP2BPPP/R3K2R w KQkq - 2 9" + }, + { + "move": "Ba3", + "fen": "r1N1k2r/ppp1n1pp/8/8/8/b1P5/PP2BPPP/R3K2R w KQkq - 2 9" + }, + { + "move": "Bd4", + "fen": "r1N1k2r/ppp1n1pp/8/8/3b4/2P5/PP2BPPP/R3K2R w KQkq - 2 9" + }, + { + "move": "Be3", + "fen": "r1N1k2r/ppp1n1pp/8/8/8/2P1b3/PP2BPPP/R3K2R w KQkq - 2 9" + }, + { + "move": "Bxf2+", + "fen": "r1N1k2r/ppp1n1pp/8/8/8/2P5/PP2BbPP/R3K2R w KQkq - 0 9" + }, + { + "move": "Bb6", + "fen": "r1N1k2r/ppp1n1pp/1b6/8/8/2P5/PP2BPPP/R3K2R w KQkq - 2 9" + }, + { + "move": "Bd6", + "fen": "r1N1k2r/ppp1n1pp/3b4/8/8/2P5/PP2BPPP/R3K2R w KQkq - 2 9" + }, + { + "move": "a6", + "fen": "r1N1k2r/1pp1n1pp/p7/2b5/8/2P5/PP2BPPP/R3K2R w KQkq - 0 9" + }, + { + "move": "a5", + "fen": "r1N1k2r/1pp1n1pp/8/p1b5/8/2P5/PP2BPPP/R3K2R w KQkq a6 0 9" + }, + { + "move": "b6", + "fen": "r1N1k2r/p1p1n1pp/1p6/2b5/8/2P5/PP2BPPP/R3K2R w KQkq - 0 9" + }, + { + "move": "b5", + "fen": "r1N1k2r/p1p1n1pp/8/1pb5/8/2P5/PP2BPPP/R3K2R w KQkq b6 0 9" + }, + { + "move": "c6", + "fen": "r1N1k2r/pp2n1pp/2p5/2b5/8/2P5/PP2BPPP/R3K2R w KQkq - 0 9" + }, + { + "move": "Nd5", + "fen": "r1N1k2r/ppp3pp/8/2bn4/8/2P5/PP2BPPP/R3K2R w KQkq - 2 9" + }, + { + "move": "Nf5", + "fen": "r1N1k2r/ppp3pp/8/2b2n2/8/2P5/PP2BPPP/R3K2R w KQkq - 2 9" + }, + { + "move": "Nc6", + "fen": "r1N1k2r/ppp3pp/2n5/2b5/8/2P5/PP2BPPP/R3K2R w KQkq - 2 9" + }, + { + "move": "Ng6", + "fen": "r1N1k2r/ppp3pp/6n1/2b5/8/2P5/PP2BPPP/R3K2R w KQkq - 2 9" + }, + { + "move": "Nxc8", + "fen": "r1n1k2r/ppp3pp/8/2b5/8/2P5/PP2BPPP/R3K2R w KQkq - 0 9" + }, + { + "move": "Ng8", + "fen": "r1N1k1nr/ppp3pp/8/2b5/8/2P5/PP2BPPP/R3K2R w KQkq - 2 9" + }, + { + "move": "g6", + "fen": "r1N1k2r/ppp1n2p/6p1/2b5/8/2P5/PP2BPPP/R3K2R w KQkq - 0 9" + }, + { + "move": "g5", + "fen": "r1N1k2r/ppp1n2p/8/2b3p1/8/2P5/PP2BPPP/R3K2R w KQkq g6 0 9" + }, + { + "move": "h6", + "fen": "r1N1k2r/ppp1n1p1/7p/2b5/8/2P5/PP2BPPP/R3K2R w KQkq - 0 9" + }, + { + "move": "h5", + "fen": "r1N1k2r/ppp1n1p1/8/2b4p/8/2P5/PP2BPPP/R3K2R w KQkq h6 0 9" + }, + { + "move": "Rb8", + "fen": "1rN1k2r/ppp1n1pp/8/2b5/8/2P5/PP2BPPP/R3K2R w KQk - 2 9" + }, + { + "move": "Rxc8", + "fen": "2r1k2r/ppp1n1pp/8/2b5/8/2P5/PP2BPPP/R3K2R w KQk - 0 9" + }, + { + "move": "Kd7", + "fen": "r1N4r/pppkn1pp/8/2b5/8/2P5/PP2BPPP/R3K2R w KQ - 2 9" + }, + { + "move": "Kf7", + "fen": "r1N4r/ppp1nkpp/8/2b5/8/2P5/PP2BPPP/R3K2R w KQ - 2 9" + }, + { + "move": "Kd8", + "fen": "r1Nk3r/ppp1n1pp/8/2b5/8/2P5/PP2BPPP/R3K2R w KQ - 2 9" + }, + { + "move": "Kf8", + "fen": "r1N2k1r/ppp1n1pp/8/2b5/8/2P5/PP2BPPP/R3K2R w KQ - 2 9" + }, + { + "move": "O-O", + "fen": "r1N2rk1/ppp1n1pp/8/2b5/8/2P5/PP2BPPP/R3K2R w KQ - 2 9" + }, + { + "move": "Rg8", + "fen": "r1N1k1r1/ppp1n1pp/8/2b5/8/2P5/PP2BPPP/R3K2R w KQq - 2 9" + }, + { + "move": "Rf8", + "fen": "r1N1kr2/ppp1n1pp/8/2b5/8/2P5/PP2BPPP/R3K2R w KQq - 2 9" + } + ] + }, + { + "start": { + "fen": "r3k2r/pp2bppp/2p5/8/2B5/8/PPP1N1PP/R2nK2R w KQkq - 1 8", + "description": "Can't castle through opposing piece." + }, + "expected": [ + { + "move": "Rb1", + "fen": "r3k2r/pp2bppp/2p5/8/2B5/8/PPP1N1PP/1R1nK2R b Kkq - 2 8" + }, + { + "move": "Rc1", + "fen": "r3k2r/pp2bppp/2p5/8/2B5/8/PPP1N1PP/2RnK2R b Kkq - 2 8" + }, + { + "move": "Rxd1", + "fen": "r3k2r/pp2bppp/2p5/8/2B5/8/PPP1N1PP/3RK2R b Kkq - 0 8" + }, + { + "move": "Kxd1", + "fen": "r3k2r/pp2bppp/2p5/8/2B5/8/PPP1N1PP/R2K3R b kq - 0 8" + }, + { + "move": "Kf1", + "fen": "r3k2r/pp2bppp/2p5/8/2B5/8/PPP1N1PP/R2n1K1R b kq - 2 8" + }, + { + "move": "Kd2", + "fen": "r3k2r/pp2bppp/2p5/8/2B5/8/PPPKN1PP/R2n3R b kq - 2 8" + }, + { + "move": "O-O", + "fen": "r3k2r/pp2bppp/2p5/8/2B5/8/PPP1N1PP/R2n1RK1 b kq - 2 8" + }, + { + "move": "Rg1", + "fen": "r3k2r/pp2bppp/2p5/8/2B5/8/PPP1N1PP/R2nK1R1 b Qkq - 2 8" + }, + { + "move": "Rf1", + "fen": "r3k2r/pp2bppp/2p5/8/2B5/8/PPP1N1PP/R2nKR2 b Qkq - 2 8" + }, + { + "move": "a3", + "fen": "r3k2r/pp2bppp/2p5/8/2B5/P7/1PP1N1PP/R2nK2R b KQkq - 0 8" + }, + { + "move": "a4", + "fen": "r3k2r/pp2bppp/2p5/8/P1B5/8/1PP1N1PP/R2nK2R b KQkq a3 0 8" + }, + { + "move": "b3", + "fen": "r3k2r/pp2bppp/2p5/8/2B5/1P6/P1P1N1PP/R2nK2R b KQkq - 0 8" + }, + { + "move": "b4", + "fen": "r3k2r/pp2bppp/2p5/8/1PB5/8/P1P1N1PP/R2nK2R b KQkq b3 0 8" + }, + { + "move": "c3", + "fen": "r3k2r/pp2bppp/2p5/8/2B5/2P5/PP2N1PP/R2nK2R b KQkq - 0 8" + }, + { + "move": "Nc1", + "fen": "r3k2r/pp2bppp/2p5/8/2B5/8/PPP3PP/R1NnK2R b KQkq - 2 8" + }, + { + "move": "Ng1", + "fen": "r3k2r/pp2bppp/2p5/8/2B5/8/PPP3PP/R2nK1NR b KQkq - 2 8" + }, + { + "move": "Nc3", + "fen": "r3k2r/pp2bppp/2p5/8/2B5/2N5/PPP3PP/R2nK2R b KQkq - 2 8" + }, + { + "move": "Ng3", + "fen": "r3k2r/pp2bppp/2p5/8/2B5/6N1/PPP3PP/R2nK2R b KQkq - 2 8" + }, + { + "move": "Nd4", + "fen": "r3k2r/pp2bppp/2p5/8/2BN4/8/PPP3PP/R2nK2R b KQkq - 2 8" + }, + { + "move": "Nf4", + "fen": "r3k2r/pp2bppp/2p5/8/2B2N2/8/PPP3PP/R2nK2R b KQkq - 2 8" + }, + { + "move": "g3", + "fen": "r3k2r/pp2bppp/2p5/8/2B5/6P1/PPP1N2P/R2nK2R b KQkq - 0 8" + }, + { + "move": "g4", + "fen": "r3k2r/pp2bppp/2p5/8/2B3P1/8/PPP1N2P/R2nK2R b KQkq g3 0 8" + }, + { + "move": "h3", + "fen": "r3k2r/pp2bppp/2p5/8/2B5/7P/PPP1N1P1/R2nK2R b KQkq - 0 8" + }, + { + "move": "h4", + "fen": "r3k2r/pp2bppp/2p5/8/2B4P/8/PPP1N1P1/R2nK2R b KQkq h3 0 8" + }, + { + "move": "Bb3", + "fen": "r3k2r/pp2bppp/2p5/8/8/1B6/PPP1N1PP/R2nK2R b KQkq - 2 8" + }, + { + "move": "Bd3", + "fen": "r3k2r/pp2bppp/2p5/8/8/3B4/PPP1N1PP/R2nK2R b KQkq - 2 8" + }, + { + "move": "Bb5", + "fen": "r3k2r/pp2bppp/2p5/1B6/8/8/PPP1N1PP/R2nK2R b KQkq - 2 8" + }, + { + "move": "Ba6", + "fen": "r3k2r/pp2bppp/B1p5/8/8/8/PPP1N1PP/R2nK2R b KQkq - 2 8" + }, + { + "move": "Bd5", + "fen": "r3k2r/pp2bppp/2p5/3B4/8/8/PPP1N1PP/R2nK2R b KQkq - 2 8" + }, + { + "move": "Be6", + "fen": "r3k2r/pp2bppp/2p1B3/8/8/8/PPP1N1PP/R2nK2R b KQkq - 2 8" + }, + { + "move": "Bxf7+", + "fen": "r3k2r/pp2bBpp/2p5/8/8/8/PPP1N1PP/R2nK2R b KQkq - 0 8" + } + ] + }, + { + "description": "Transpose of r3k2r/pp2bppp/2p5/8/2B5/8/PPP1N1PP/R2nK2R w KQkq - 1 8", + "start": { + "fen": "r2Nk2r/ppp1n1pp/8/2b5/8/2P5/PP2BPPP/R3K2R b KQkq - 1 8", + "description": "Can't castle through opposing piece." + }, + "expected": [ + { + "move": "Bb4", + "fen": "r2Nk2r/ppp1n1pp/8/8/1b6/2P5/PP2BPPP/R3K2R w KQkq - 2 9" + }, + { + "move": "Ba3", + "fen": "r2Nk2r/ppp1n1pp/8/8/8/b1P5/PP2BPPP/R3K2R w KQkq - 2 9" + }, + { + "move": "Bd4", + "fen": "r2Nk2r/ppp1n1pp/8/8/3b4/2P5/PP2BPPP/R3K2R w KQkq - 2 9" + }, + { + "move": "Be3", + "fen": "r2Nk2r/ppp1n1pp/8/8/8/2P1b3/PP2BPPP/R3K2R w KQkq - 2 9" + }, + { + "move": "Bxf2+", + "fen": "r2Nk2r/ppp1n1pp/8/8/8/2P5/PP2BbPP/R3K2R w KQkq - 0 9" + }, + { + "move": "Bb6", + "fen": "r2Nk2r/ppp1n1pp/1b6/8/8/2P5/PP2BPPP/R3K2R w KQkq - 2 9" + }, + { + "move": "Bd6", + "fen": "r2Nk2r/ppp1n1pp/3b4/8/8/2P5/PP2BPPP/R3K2R w KQkq - 2 9" + }, + { + "move": "a6", + "fen": "r2Nk2r/1pp1n1pp/p7/2b5/8/2P5/PP2BPPP/R3K2R w KQkq - 0 9" + }, + { + "move": "a5", + "fen": "r2Nk2r/1pp1n1pp/8/p1b5/8/2P5/PP2BPPP/R3K2R w KQkq a6 0 9" + }, + { + "move": "b6", + "fen": "r2Nk2r/p1p1n1pp/1p6/2b5/8/2P5/PP2BPPP/R3K2R w KQkq - 0 9" + }, + { + "move": "b5", + "fen": "r2Nk2r/p1p1n1pp/8/1pb5/8/2P5/PP2BPPP/R3K2R w KQkq b6 0 9" + }, + { + "move": "c6", + "fen": "r2Nk2r/pp2n1pp/2p5/2b5/8/2P5/PP2BPPP/R3K2R w KQkq - 0 9" + }, + { + "move": "Nd5", + "fen": "r2Nk2r/ppp3pp/8/2bn4/8/2P5/PP2BPPP/R3K2R w KQkq - 2 9" + }, + { + "move": "Nf5", + "fen": "r2Nk2r/ppp3pp/8/2b2n2/8/2P5/PP2BPPP/R3K2R w KQkq - 2 9" + }, + { + "move": "Nc6", + "fen": "r2Nk2r/ppp3pp/2n5/2b5/8/2P5/PP2BPPP/R3K2R w KQkq - 2 9" + }, + { + "move": "Ng6", + "fen": "r2Nk2r/ppp3pp/6n1/2b5/8/2P5/PP2BPPP/R3K2R w KQkq - 2 9" + }, + { + "move": "Nc8", + "fen": "r1nNk2r/ppp3pp/8/2b5/8/2P5/PP2BPPP/R3K2R w KQkq - 2 9" + }, + { + "move": "Ng8", + "fen": "r2Nk1nr/ppp3pp/8/2b5/8/2P5/PP2BPPP/R3K2R w KQkq - 2 9" + }, + { + "move": "g6", + "fen": "r2Nk2r/ppp1n2p/6p1/2b5/8/2P5/PP2BPPP/R3K2R w KQkq - 0 9" + }, + { + "move": "g5", + "fen": "r2Nk2r/ppp1n2p/8/2b3p1/8/2P5/PP2BPPP/R3K2R w KQkq g6 0 9" + }, + { + "move": "h6", + "fen": "r2Nk2r/ppp1n1p1/7p/2b5/8/2P5/PP2BPPP/R3K2R w KQkq - 0 9" + }, + { + "move": "h5", + "fen": "r2Nk2r/ppp1n1p1/8/2b4p/8/2P5/PP2BPPP/R3K2R w KQkq h6 0 9" + }, + { + "move": "Rb8", + "fen": "1r1Nk2r/ppp1n1pp/8/2b5/8/2P5/PP2BPPP/R3K2R w KQk - 2 9" + }, + { + "move": "Rc8", + "fen": "2rNk2r/ppp1n1pp/8/2b5/8/2P5/PP2BPPP/R3K2R w KQk - 2 9" + }, + { + "move": "Rxd8", + "fen": "3rk2r/ppp1n1pp/8/2b5/8/2P5/PP2BPPP/R3K2R w KQk - 0 9" + }, + { + "move": "Kd7", + "fen": "r2N3r/pppkn1pp/8/2b5/8/2P5/PP2BPPP/R3K2R w KQ - 2 9" + }, + { + "move": "Kxd8", + "fen": "r2k3r/ppp1n1pp/8/2b5/8/2P5/PP2BPPP/R3K2R w KQ - 0 9" + }, + { + "move": "Kf8", + "fen": "r2N1k1r/ppp1n1pp/8/2b5/8/2P5/PP2BPPP/R3K2R w KQ - 2 9" + }, + { + "move": "O-O", + "fen": "r2N1rk1/ppp1n1pp/8/2b5/8/2P5/PP2BPPP/R3K2R w KQ - 2 9" + }, + { + "move": "Rg8", + "fen": "r2Nk1r1/ppp1n1pp/8/2b5/8/2P5/PP2BPPP/R3K2R w KQq - 2 9" + }, + { + "move": "Rf8", + "fen": "r2Nkr2/ppp1n1pp/8/2b5/8/2P5/PP2BPPP/R3K2R w KQq - 2 9" + } + ] + }, + { + "start": { + "fen": "rnbq1k1r/pp1Pbppp/2p5/8/2B5/8/PPP1NnPP/RNBQK2R b KQ - 1 8", + "description": "From https://www.youtube.com/watch?v=U4ogK0MIzqk&ab_channel=SebastianLague&t=10m10s" + }, + "expected": [ + { + "move": "Nxd1", + "fen": "rnbq1k1r/pp1Pbppp/2p5/8/2B5/8/PPP1N1PP/RNBnK2R w KQ - 0 9" + }, + { + "move": "Nxh1", + "fen": "rnbq1k1r/pp1Pbppp/2p5/8/2B5/8/PPP1N1PP/RNBQK2n w Q - 0 9" + }, + { + "move": "Nd3+", + "fen": "rnbq1k1r/pp1Pbppp/2p5/8/2B5/3n4/PPP1N1PP/RNBQK2R w KQ - 2 9" + }, + { + "move": "Nh3", + "fen": "rnbq1k1r/pp1Pbppp/2p5/8/2B5/7n/PPP1N1PP/RNBQK2R w KQ - 2 9" + }, + { + "move": "Ne4", + "fen": "rnbq1k1r/pp1Pbppp/2p5/8/2B1n3/8/PPP1N1PP/RNBQK2R w KQ - 2 9" + }, + { + "move": "Ng4", + "fen": "rnbq1k1r/pp1Pbppp/2p5/8/2B3n1/8/PPP1N1PP/RNBQK2R w KQ - 2 9" + }, + { + "move": "c5", + "fen": "rnbq1k1r/pp1Pbppp/8/2p5/2B5/8/PPP1NnPP/RNBQK2R w KQ - 0 9" + }, + { + "move": "a6", + "fen": "rnbq1k1r/1p1Pbppp/p1p5/8/2B5/8/PPP1NnPP/RNBQK2R w KQ - 0 9" + }, + { + "move": "a5", + "fen": "rnbq1k1r/1p1Pbppp/2p5/p7/2B5/8/PPP1NnPP/RNBQK2R w KQ a6 0 9" + }, + { + "move": "b6", + "fen": "rnbq1k1r/p2Pbppp/1pp5/8/2B5/8/PPP1NnPP/RNBQK2R w KQ - 0 9" + }, + { + "move": "b5", + "fen": "rnbq1k1r/p2Pbppp/2p5/1p6/2B5/8/PPP1NnPP/RNBQK2R w KQ b6 0 9" + }, + { + "move": "Bd6", + "fen": "rnbq1k1r/pp1P1ppp/2pb4/8/2B5/8/PPP1NnPP/RNBQK2R w KQ - 2 9" + }, + { + "move": "Bc5", + "fen": "rnbq1k1r/pp1P1ppp/2p5/2b5/2B5/8/PPP1NnPP/RNBQK2R w KQ - 2 9" + }, + { + "move": "Bb4+", + "fen": "rnbq1k1r/pp1P1ppp/2p5/8/1bB5/8/PPP1NnPP/RNBQK2R w KQ - 2 9" + }, + { + "move": "Ba3", + "fen": "rnbq1k1r/pp1P1ppp/2p5/8/2B5/b7/PPP1NnPP/RNBQK2R w KQ - 2 9" + }, + { + "move": "Bf6", + "fen": "rnbq1k1r/pp1P1ppp/2p2b2/8/2B5/8/PPP1NnPP/RNBQK2R w KQ - 2 9" + }, + { + "move": "Bg5", + "fen": "rnbq1k1r/pp1P1ppp/2p5/6b1/2B5/8/PPP1NnPP/RNBQK2R w KQ - 2 9" + }, + { + "move": "Bh4", + "fen": "rnbq1k1r/pp1P1ppp/2p5/8/2B4b/8/PPP1NnPP/RNBQK2R w KQ - 2 9" + }, + { + "move": "f6", + "fen": "rnbq1k1r/pp1Pb1pp/2p2p2/8/2B5/8/PPP1NnPP/RNBQK2R w KQ - 0 9" + }, + { + "move": "f5", + "fen": "rnbq1k1r/pp1Pb1pp/2p5/5p2/2B5/8/PPP1NnPP/RNBQK2R w KQ f6 0 9" + }, + { + "move": "g6", + "fen": "rnbq1k1r/pp1Pbp1p/2p3p1/8/2B5/8/PPP1NnPP/RNBQK2R w KQ - 0 9" + }, + { + "move": "g5", + "fen": "rnbq1k1r/pp1Pbp1p/2p5/6p1/2B5/8/PPP1NnPP/RNBQK2R w KQ g6 0 9" + }, + { + "move": "h6", + "fen": "rnbq1k1r/pp1Pbpp1/2p4p/8/2B5/8/PPP1NnPP/RNBQK2R w KQ - 0 9" + }, + { + "move": "h5", + "fen": "rnbq1k1r/pp1Pbpp1/2p5/7p/2B5/8/PPP1NnPP/RNBQK2R w KQ h6 0 9" + }, + { + "move": "Na6", + "fen": "r1bq1k1r/pp1Pbppp/n1p5/8/2B5/8/PPP1NnPP/RNBQK2R w KQ - 2 9" + }, + { + "move": "Nxd7", + "fen": "r1bq1k1r/pp1nbppp/2p5/8/2B5/8/PPP1NnPP/RNBQK2R w KQ - 0 9" + }, + { + "move": "Bxd7", + "fen": "rn1q1k1r/pp1bbppp/2p5/8/2B5/8/PPP1NnPP/RNBQK2R w KQ - 0 9" + }, + { + "move": "Qc7", + "fen": "rnb2k1r/ppqPbppp/2p5/8/2B5/8/PPP1NnPP/RNBQK2R w KQ - 2 9" + }, + { + "move": "Qb6", + "fen": "rnb2k1r/pp1Pbppp/1qp5/8/2B5/8/PPP1NnPP/RNBQK2R w KQ - 2 9" + }, + { + "move": "Qa5+", + "fen": "rnb2k1r/pp1Pbppp/2p5/q7/2B5/8/PPP1NnPP/RNBQK2R w KQ - 2 9" + }, + { + "move": "Qxd7", + "fen": "rnb2k1r/pp1qbppp/2p5/8/2B5/8/PPP1NnPP/RNBQK2R w KQ - 0 9" + }, + { + "move": "Qe8", + "fen": "rnb1qk1r/pp1Pbppp/2p5/8/2B5/8/PPP1NnPP/RNBQK2R w KQ - 2 9" + }, + { + "move": "Kg8", + "fen": "rnbq2kr/pp1Pbppp/2p5/8/2B5/8/PPP1NnPP/RNBQK2R w KQ - 2 9" + }, + { + "move": "Rg8", + "fen": "rnbq1kr1/pp1Pbppp/2p5/8/2B5/8/PPP1NnPP/RNBQK2R w KQ - 2 9" + } + ] + }, + { + "description": "Transpose of rnbq1k1r/pp1Pbppp/2p5/8/2B5/8/PPP1NnPP/RNBQK2R b KQ - 1 8", + "start": { + "fen": "rnbqk2r/ppp1nNpp/8/2b5/8/2P5/PP1pBPPP/RNBQ1K1R w kq - 1 8", + "description": "From https://www.youtube.com/watch?v=U4ogK0MIzqk&ab_channel=SebastianLague&t=10m10s" + }, + "expected": [ + { + "move": "Nxd2", + "fen": "rnbqk2r/ppp1nNpp/8/2b5/8/2P5/PP1NBPPP/R1BQ1K1R b kq - 0 8" + }, + { + "move": "Na3", + "fen": "rnbqk2r/ppp1nNpp/8/2b5/8/N1P5/PP1pBPPP/R1BQ1K1R b kq - 2 8" + }, + { + "move": "Bxd2", + "fen": "rnbqk2r/ppp1nNpp/8/2b5/8/2P5/PP1BBPPP/RN1Q1K1R b kq - 0 8" + }, + { + "move": "Qe1", + "fen": "rnbqk2r/ppp1nNpp/8/2b5/8/2P5/PP1pBPPP/RNB1QK1R b kq - 2 8" + }, + { + "move": "Qc2", + "fen": "rnbqk2r/ppp1nNpp/8/2b5/8/2P5/PPQpBPPP/RNB2K1R b kq - 2 8" + }, + { + "move": "Qb3", + "fen": "rnbqk2r/ppp1nNpp/8/2b5/8/1QP5/PP1pBPPP/RNB2K1R b kq - 2 8" + }, + { + "move": "Qa4+", + "fen": "rnbqk2r/ppp1nNpp/8/2b5/Q7/2P5/PP1pBPPP/RNB2K1R b kq - 2 8" + }, + { + "move": "Qxd2", + "fen": "rnbqk2r/ppp1nNpp/8/2b5/8/2P5/PP1QBPPP/RNB2K1R b kq - 0 8" + }, + { + "move": "Kg1", + "fen": "rnbqk2r/ppp1nNpp/8/2b5/8/2P5/PP1pBPPP/RNBQ2KR b kq - 2 8" + }, + { + "move": "Rg1", + "fen": "rnbqk2r/ppp1nNpp/8/2b5/8/2P5/PP1pBPPP/RNBQ1KR1 b kq - 2 8" + }, + { + "move": "a3", + "fen": "rnbqk2r/ppp1nNpp/8/2b5/8/P1P5/1P1pBPPP/RNBQ1K1R b kq - 0 8" + }, + { + "move": "a4", + "fen": "rnbqk2r/ppp1nNpp/8/2b5/P7/2P5/1P1pBPPP/RNBQ1K1R b kq a3 0 8" + }, + { + "move": "b3", + "fen": "rnbqk2r/ppp1nNpp/8/2b5/8/1PP5/P2pBPPP/RNBQ1K1R b kq - 0 8" + }, + { + "move": "b4", + "fen": "rnbqk2r/ppp1nNpp/8/2b5/1P6/2P5/P2pBPPP/RNBQ1K1R b kq b3 0 8" + }, + { + "move": "Bd3", + "fen": "rnbqk2r/ppp1nNpp/8/2b5/8/2PB4/PP1p1PPP/RNBQ1K1R b kq - 2 8" + }, + { + "move": "Bc4", + "fen": "rnbqk2r/ppp1nNpp/8/2b5/2B5/2P5/PP1p1PPP/RNBQ1K1R b kq - 2 8" + }, + { + "move": "Bb5+", + "fen": "rnbqk2r/ppp1nNpp/8/1Bb5/8/2P5/PP1p1PPP/RNBQ1K1R b kq - 2 8" + }, + { + "move": "Ba6", + "fen": "rnbqk2r/ppp1nNpp/B7/2b5/8/2P5/PP1p1PPP/RNBQ1K1R b kq - 2 8" + }, + { + "move": "Bf3", + "fen": "rnbqk2r/ppp1nNpp/8/2b5/8/2P2B2/PP1p1PPP/RNBQ1K1R b kq - 2 8" + }, + { + "move": "Bg4", + "fen": "rnbqk2r/ppp1nNpp/8/2b5/6B1/2P5/PP1p1PPP/RNBQ1K1R b kq - 2 8" + }, + { + "move": "Bh5", + "fen": "rnbqk2r/ppp1nNpp/8/2b4B/8/2P5/PP1p1PPP/RNBQ1K1R b kq - 2 8" + }, + { + "move": "f3", + "fen": "rnbqk2r/ppp1nNpp/8/2b5/8/2P2P2/PP1pB1PP/RNBQ1K1R b kq - 0 8" + }, + { + "move": "f4", + "fen": "rnbqk2r/ppp1nNpp/8/2b5/5P2/2P5/PP1pB1PP/RNBQ1K1R b kq f3 0 8" + }, + { + "move": "g3", + "fen": "rnbqk2r/ppp1nNpp/8/2b5/8/2P3P1/PP1pBP1P/RNBQ1K1R b kq - 0 8" + }, + { + "move": "g4", + "fen": "rnbqk2r/ppp1nNpp/8/2b5/6P1/2P5/PP1pBP1P/RNBQ1K1R b kq g3 0 8" + }, + { + "move": "h3", + "fen": "rnbqk2r/ppp1nNpp/8/2b5/8/2P4P/PP1pBPP1/RNBQ1K1R b kq - 0 8" + }, + { + "move": "h4", + "fen": "rnbqk2r/ppp1nNpp/8/2b5/7P/2P5/PP1pBPP1/RNBQ1K1R b kq h3 0 8" + }, + { + "move": "c4", + "fen": "rnbqk2r/ppp1nNpp/8/2b5/2P5/8/PP1pBPPP/RNBQ1K1R b kq - 0 8" + }, + { + "move": "Ne5", + "fen": "rnbqk2r/ppp1n1pp/8/2b1N3/8/2P5/PP1pBPPP/RNBQ1K1R b kq - 2 8" + }, + { + "move": "Ng5", + "fen": "rnbqk2r/ppp1n1pp/8/2b3N1/8/2P5/PP1pBPPP/RNBQ1K1R b kq - 2 8" + }, + { + "move": "Nd6+", + "fen": "rnbqk2r/ppp1n1pp/3N4/2b5/8/2P5/PP1pBPPP/RNBQ1K1R b kq - 2 8" + }, + { + "move": "Nh6", + "fen": "rnbqk2r/ppp1n1pp/7N/2b5/8/2P5/PP1pBPPP/RNBQ1K1R b kq - 2 8" + }, + { + "move": "Nxd8", + "fen": "rnbNk2r/ppp1n1pp/8/2b5/8/2P5/PP1pBPPP/RNBQ1K1R b kq - 0 8" + }, + { + "move": "Nxh8", + "fen": "rnbqk2N/ppp1n1pp/8/2b5/8/2P5/PP1pBPPP/RNBQ1K1R b q - 0 8" + } + ] + } + ] +} \ No newline at end of file diff --git a/testdata/checkmates.json b/testdata/checkmates.json new file mode 100644 index 0000000..8eeebd4 --- /dev/null +++ b/testdata/checkmates.json @@ -0,0 +1,64 @@ +{ + "testCases": [ + { + "start": { + "fen": "1R3k2/2R5/8/8/8/1K6/8/8 b - - 0 1", + "description": "Black has been ladder-mated." + }, + "expected": [] + }, + { + "description": "Transpose of 1R3k2/2R5/8/8/8/1K6/8/8 b - - 0 1", + "start": { + "fen": "8/8/1k6/8/8/8/2r5/1r3K2 w - - 0 1", + "description": "White has been ladder-mated." + }, + "expected": [] + }, + { + "start": { + "fen": "8/6N1/3R4/6k1/5Pp1/1K2P3/8/4B1R1 b - f3 0 1", + "description": "Black can't capture en passant so is mated." + }, + "expected": [] + }, + { + "description": "Transpose of 8/6N1/3R4/6k1/5Pp1/1K2P3/8/4B1R1 b - f3 0 1", + "start": { + "fen": "4b1r1/8/1k2p3/5pP1/6K1/3r4/6n1/8 w - f6 0 1", + "description": "White can't capture en passant so is mated." + }, + "expected": [] + }, + { + "start": { + "fen": "kr6/ppN5/8/8/8/8/2K5/8 b - - 0 1", + "description": "Black has been smother mated." + }, + "expected": [] + }, + { + "description": "Transpose of kr6/ppN5/8/8/8/8/2K5/8 b - - 0 1", + "start": { + "fen": "8/2k5/8/8/8/8/PPn5/KR6 w - - 0 1", + "description": "White has been smother mated." + }, + "expected": [] + }, + { + "start": { + "fen": "k1K5/p1N5/8/8/8/8/8/8 b - - 0 1", + "description": "A little-known mate with minimal pieces." + }, + "expected": [] + }, + { + "description": "Transpose of k1K5/p1N5/8/8/8/8/8/8 b - - 0 1", + "start": { + "fen": "8/8/8/8/8/8/P1n5/K1k5 w - - 0 1", + "description": "A little-known mate with minimal pieces." + }, + "expected": [] + } + ] +} \ No newline at end of file diff --git a/testdata/famous.json b/testdata/famous.json new file mode 100644 index 0000000..7947b3d --- /dev/null +++ b/testdata/famous.json @@ -0,0 +1,390 @@ +{ + "description": "Some positions involving famous moves, that you wouldn't want your move generator to miss!", + "testCases": [ + { + "start": { + "description": "From 'The Game of the Century' (Bobby Fischer v. Donald Byrne).", + "fen": "r3r1k1/pp3pbp/1qp1b1p1/2B5/2BP4/Q1n2N2/P4PPP/3R1K1R w - - 4 18" + }, + "expected": [ + { + "move": "Rc1", + "fen": "r3r1k1/pp3pbp/1qp1b1p1/2B5/2BP4/Q1n2N2/P4PPP/2R2K1R b - - 5 18" + }, + { + "move": "Rb1", + "fen": "r3r1k1/pp3pbp/1qp1b1p1/2B5/2BP4/Q1n2N2/P4PPP/1R3K1R b - - 5 18" + }, + { + "move": "Ra1", + "fen": "r3r1k1/pp3pbp/1qp1b1p1/2B5/2BP4/Q1n2N2/P4PPP/R4K1R b - - 5 18" + }, + { + "move": "Re1", + "fen": "r3r1k1/pp3pbp/1qp1b1p1/2B5/2BP4/Q1n2N2/P4PPP/4RK1R b - - 5 18" + }, + { + "move": "Rd2", + "fen": "r3r1k1/pp3pbp/1qp1b1p1/2B5/2BP4/Q1n2N2/P2R1PPP/5K1R b - - 5 18" + }, + { + "move": "Rd3", + "fen": "r3r1k1/pp3pbp/1qp1b1p1/2B5/2BP4/Q1nR1N2/P4PPP/5K1R b - - 5 18" + }, + { + "move": "Ke1", + "fen": "r3r1k1/pp3pbp/1qp1b1p1/2B5/2BP4/Q1n2N2/P4PPP/3RK2R b - - 5 18" + }, + { + "move": "Kg1", + "fen": "r3r1k1/pp3pbp/1qp1b1p1/2B5/2BP4/Q1n2N2/P4PPP/3R2KR b - - 5 18" + }, + { + "move": "Rg1", + "fen": "r3r1k1/pp3pbp/1qp1b1p1/2B5/2BP4/Q1n2N2/P4PPP/3R1KR1 b - - 5 18" + }, + { + "move": "g3", + "fen": "r3r1k1/pp3pbp/1qp1b1p1/2B5/2BP4/Q1n2NP1/P4P1P/3R1K1R b - - 0 18" + }, + { + "move": "g4", + "fen": "r3r1k1/pp3pbp/1qp1b1p1/2B5/2BP2P1/Q1n2N2/P4P1P/3R1K1R b - g3 0 18" + }, + { + "move": "h3", + "fen": "r3r1k1/pp3pbp/1qp1b1p1/2B5/2BP4/Q1n2N1P/P4PP1/3R1K1R b - - 0 18" + }, + { + "move": "h4", + "fen": "r3r1k1/pp3pbp/1qp1b1p1/2B5/2BP3P/Q1n2N2/P4PP1/3R1K1R b - h3 0 18" + }, + { + "move": "Qb2", + "fen": "r3r1k1/pp3pbp/1qp1b1p1/2B5/2BP4/2n2N2/PQ3PPP/3R1K1R b - - 5 18" + }, + { + "move": "Qc1", + "fen": "r3r1k1/pp3pbp/1qp1b1p1/2B5/2BP4/2n2N2/P4PPP/2QR1K1R b - - 5 18" + }, + { + "move": "Qb3", + "fen": "r3r1k1/pp3pbp/1qp1b1p1/2B5/2BP4/1Qn2N2/P4PPP/3R1K1R b - - 5 18" + }, + { + "move": "Qxc3", + "fen": "r3r1k1/pp3pbp/1qp1b1p1/2B5/2BP4/2Q2N2/P4PPP/3R1K1R b - - 0 18" + }, + { + "move": "Qa4", + "fen": "r3r1k1/pp3pbp/1qp1b1p1/2B5/Q1BP4/2n2N2/P4PPP/3R1K1R b - - 5 18" + }, + { + "move": "Qa5", + "fen": "r3r1k1/pp3pbp/1qp1b1p1/Q1B5/2BP4/2n2N2/P4PPP/3R1K1R b - - 5 18" + }, + { + "move": "Qa6", + "fen": "r3r1k1/pp3pbp/Qqp1b1p1/2B5/2BP4/2n2N2/P4PPP/3R1K1R b - - 5 18" + }, + { + "move": "Qxa7", + "fen": "r3r1k1/Qp3pbp/1qp1b1p1/2B5/2BP4/2n2N2/P4PPP/3R1K1R b - - 0 18" + }, + { + "move": "Qb4", + "fen": "r3r1k1/pp3pbp/1qp1b1p1/2B5/1QBP4/2n2N2/P4PPP/3R1K1R b - - 5 18" + }, + { + "move": "Ne1", + "fen": "r3r1k1/pp3pbp/1qp1b1p1/2B5/2BP4/Q1n5/P4PPP/3RNK1R b - - 5 18" + }, + { + "move": "Ng1", + "fen": "r3r1k1/pp3pbp/1qp1b1p1/2B5/2BP4/Q1n5/P4PPP/3R1KNR b - - 5 18" + }, + { + "move": "Nd2", + "fen": "r3r1k1/pp3pbp/1qp1b1p1/2B5/2BP4/Q1n5/P2N1PPP/3R1K1R b - - 5 18" + }, + { + "move": "Nh4", + "fen": "r3r1k1/pp3pbp/1qp1b1p1/2B5/2BP3N/Q1n5/P4PPP/3R1K1R b - - 5 18" + }, + { + "move": "Ne5", + "fen": "r3r1k1/pp3pbp/1qp1b1p1/2B1N3/2BP4/Q1n5/P4PPP/3R1K1R b - - 5 18" + }, + { + "move": "Ng5", + "fen": "r3r1k1/pp3pbp/1qp1b1p1/2B3N1/2BP4/Q1n5/P4PPP/3R1K1R b - - 5 18" + }, + { + "move": "Bb3", + "fen": "r3r1k1/pp3pbp/1qp1b1p1/2B5/3P4/QBn2N2/P4PPP/3R1K1R b - - 5 18" + }, + { + "move": "Bd3", + "fen": "r3r1k1/pp3pbp/1qp1b1p1/2B5/3P4/Q1nB1N2/P4PPP/3R1K1R b - - 5 18" + }, + { + "move": "Be2", + "fen": "r3r1k1/pp3pbp/1qp1b1p1/2B5/3P4/Q1n2N2/P3BPPP/3R1K1R b - - 5 18" + }, + { + "move": "Bb5", + "fen": "r3r1k1/pp3pbp/1qp1b1p1/1BB5/3P4/Q1n2N2/P4PPP/3R1K1R b - - 5 18" + }, + { + "move": "Ba6", + "fen": "r3r1k1/pp3pbp/Bqp1b1p1/2B5/3P4/Q1n2N2/P4PPP/3R1K1R b - - 5 18" + }, + { + "move": "Bd5", + "fen": "r3r1k1/pp3pbp/1qp1b1p1/2BB4/3P4/Q1n2N2/P4PPP/3R1K1R b - - 5 18" + }, + { + "move": "Bxe6", + "fen": "r3r1k1/pp3pbp/1qp1B1p1/2B5/3P4/Q1n2N2/P4PPP/3R1K1R b - - 0 18" + }, + { + "move": "d5", + "fen": "r3r1k1/pp3pbp/1qp1b1p1/2BP4/2B5/Q1n2N2/P4PPP/3R1K1R b - - 0 18" + }, + { + "move": "Bb4", + "fen": "r3r1k1/pp3pbp/1qp1b1p1/8/1BBP4/Q1n2N2/P4PPP/3R1K1R b - - 5 18" + }, + { + "move": "Bxb6", + "fen": "r3r1k1/pp3pbp/1Bp1b1p1/8/2BP4/Q1n2N2/P4PPP/3R1K1R b - - 0 18" + }, + { + "move": "Bd6", + "fen": "r3r1k1/pp3pbp/1qpBb1p1/8/2BP4/Q1n2N2/P4PPP/3R1K1R b - - 5 18" + }, + { + "move": "Be7", + "fen": "r3r1k1/pp2Bpbp/1qp1b1p1/8/2BP4/Q1n2N2/P4PPP/3R1K1R b - - 5 18" + }, + { + "move": "Bf8", + "fen": "r3rBk1/pp3pbp/1qp1b1p1/8/2BP4/Q1n2N2/P4PPP/3R1K1R b - - 5 18" + } + ] + }, + { + "start": { + "fen": "5rk1/pp4pp/4p3/2R3Q1/3n4/2q4r/P1P2PPP/5RK1 b - - 0 1", + "description": "The Gold Coins Game. Position before the Gold Coins move!" + }, + "expected": [ + { + "move": "Qb2", + "fen": "5rk1/pp4pp/4p3/2R3Q1/3n4/7r/PqP2PPP/5RK1 w - - 1 2" + }, + { + "move": "Qa1", + "fen": "5rk1/pp4pp/4p3/2R3Q1/3n4/7r/P1P2PPP/q4RK1 w - - 1 2" + }, + { + "move": "Qxc2", + "fen": "5rk1/pp4pp/4p3/2R3Q1/3n4/7r/P1q2PPP/5RK1 w - - 0 2" + }, + { + "move": "Qd2", + "fen": "5rk1/pp4pp/4p3/2R3Q1/3n4/7r/P1Pq1PPP/5RK1 w - - 1 2" + }, + { + "move": "Qe1", + "fen": "5rk1/pp4pp/4p3/2R3Q1/3n4/7r/P1P2PPP/4qRK1 w - - 1 2" + }, + { + "move": "Qb3", + "fen": "5rk1/pp4pp/4p3/2R3Q1/3n4/1q5r/P1P2PPP/5RK1 w - - 1 2" + }, + { + "move": "Qa3", + "fen": "5rk1/pp4pp/4p3/2R3Q1/3n4/q6r/P1P2PPP/5RK1 w - - 1 2" + }, + { + "move": "Qd3", + "fen": "5rk1/pp4pp/4p3/2R3Q1/3n4/3q3r/P1P2PPP/5RK1 w - - 1 2" + }, + { + "move": "Qe3", + "fen": "5rk1/pp4pp/4p3/2R3Q1/3n4/4q2r/P1P2PPP/5RK1 w - - 1 2" + }, + { + "move": "Qf3", + "fen": "5rk1/pp4pp/4p3/2R3Q1/3n4/5q1r/P1P2PPP/5RK1 w - - 1 2" + }, + { + "move": "Qg3", + "fen": "5rk1/pp4pp/4p3/2R3Q1/3n4/6qr/P1P2PPP/5RK1 w - - 1 2", + "description": "The Gold Coins move!" + }, + { + "move": "Qb4", + "fen": "5rk1/pp4pp/4p3/2R3Q1/1q1n4/7r/P1P2PPP/5RK1 w - - 1 2" + }, + { + "move": "Qa5", + "fen": "5rk1/pp4pp/4p3/q1R3Q1/3n4/7r/P1P2PPP/5RK1 w - - 1 2" + }, + { + "move": "Qc4", + "fen": "5rk1/pp4pp/4p3/2R3Q1/2qn4/7r/P1P2PPP/5RK1 w - - 1 2" + }, + { + "move": "Qxc5", + "fen": "5rk1/pp4pp/4p3/2q3Q1/3n4/7r/P1P2PPP/5RK1 w - - 0 2" + }, + { + "move": "Rxh2", + "fen": "5rk1/pp4pp/4p3/2R3Q1/3n4/2q5/P1P2PPr/5RK1 w - - 0 2" + }, + { + "move": "Rg3", + "fen": "5rk1/pp4pp/4p3/2R3Q1/3n4/2q3r1/P1P2PPP/5RK1 w - - 1 2" + }, + { + "move": "Rhf3", + "fen": "5rk1/pp4pp/4p3/2R3Q1/3n4/2q2r2/P1P2PPP/5RK1 w - - 1 2" + }, + { + "move": "Re3", + "fen": "5rk1/pp4pp/4p3/2R3Q1/3n4/2q1r3/P1P2PPP/5RK1 w - - 1 2" + }, + { + "move": "Rd3", + "fen": "5rk1/pp4pp/4p3/2R3Q1/3n4/2qr4/P1P2PPP/5RK1 w - - 1 2" + }, + { + "move": "Rh4", + "fen": "5rk1/pp4pp/4p3/2R3Q1/3n3r/2q5/P1P2PPP/5RK1 w - - 1 2" + }, + { + "move": "Rh5", + "fen": "5rk1/pp4pp/4p3/2R3Qr/3n4/2q5/P1P2PPP/5RK1 w - - 1 2" + }, + { + "move": "Rh6", + "fen": "5rk1/pp4pp/4p2r/2R3Q1/3n4/2q5/P1P2PPP/5RK1 w - - 1 2" + }, + { + "move": "Nxc2", + "fen": "5rk1/pp4pp/4p3/2R3Q1/8/2q4r/P1n2PPP/5RK1 w - - 0 2" + }, + { + "move": "Ne2+", + "fen": "5rk1/pp4pp/4p3/2R3Q1/8/2q4r/P1P1nPPP/5RK1 w - - 1 2" + }, + { + "move": "Nb3", + "fen": "5rk1/pp4pp/4p3/2R3Q1/8/1nq4r/P1P2PPP/5RK1 w - - 1 2" + }, + { + "move": "Nf3+", + "fen": "5rk1/pp4pp/4p3/2R3Q1/8/2q2n1r/P1P2PPP/5RK1 w - - 1 2" + }, + { + "move": "Nb5", + "fen": "5rk1/pp4pp/4p3/1nR3Q1/8/2q4r/P1P2PPP/5RK1 w - - 1 2" + }, + { + "move": "Nf5", + "fen": "5rk1/pp4pp/4p3/2R2nQ1/8/2q4r/P1P2PPP/5RK1 w - - 1 2" + }, + { + "move": "Nc6", + "fen": "5rk1/pp4pp/2n1p3/2R3Q1/8/2q4r/P1P2PPP/5RK1 w - - 1 2" + }, + { + "move": "e5", + "fen": "5rk1/pp4pp/8/2R1p1Q1/3n4/2q4r/P1P2PPP/5RK1 w - - 0 2" + }, + { + "move": "a6", + "fen": "5rk1/1p4pp/p3p3/2R3Q1/3n4/2q4r/P1P2PPP/5RK1 w - - 0 2" + }, + { + "move": "a5", + "fen": "5rk1/1p4pp/4p3/p1R3Q1/3n4/2q4r/P1P2PPP/5RK1 w - a6 0 2" + }, + { + "move": "b6", + "fen": "5rk1/p5pp/1p2p3/2R3Q1/3n4/2q4r/P1P2PPP/5RK1 w - - 0 2" + }, + { + "move": "b5", + "fen": "5rk1/p5pp/4p3/1pR3Q1/3n4/2q4r/P1P2PPP/5RK1 w - b6 0 2" + }, + { + "move": "g6", + "fen": "5rk1/pp5p/4p1p1/2R3Q1/3n4/2q4r/P1P2PPP/5RK1 w - - 0 2" + }, + { + "move": "h6", + "fen": "5rk1/pp4p1/4p2p/2R3Q1/3n4/2q4r/P1P2PPP/5RK1 w - - 0 2" + }, + { + "move": "h5", + "fen": "5rk1/pp4p1/4p3/2R3Qp/3n4/2q4r/P1P2PPP/5RK1 w - h6 0 2" + }, + { + "move": "Rf7", + "fen": "6k1/pp3rpp/4p3/2R3Q1/3n4/2q4r/P1P2PPP/5RK1 w - - 1 2" + }, + { + "move": "Rf6", + "fen": "6k1/pp4pp/4pr2/2R3Q1/3n4/2q4r/P1P2PPP/5RK1 w - - 1 2" + }, + { + "move": "Rf5", + "fen": "6k1/pp4pp/4p3/2R2rQ1/3n4/2q4r/P1P2PPP/5RK1 w - - 1 2" + }, + { + "move": "Rf4", + "fen": "6k1/pp4pp/4p3/2R3Q1/3n1r2/2q4r/P1P2PPP/5RK1 w - - 1 2" + }, + { + "move": "Rff3", + "fen": "6k1/pp4pp/4p3/2R3Q1/3n4/2q2r1r/P1P2PPP/5RK1 w - - 1 2" + }, + { + "move": "Rxf2", + "fen": "6k1/pp4pp/4p3/2R3Q1/3n4/2q4r/P1P2rPP/5RK1 w - - 0 2" + }, + { + "move": "Re8", + "fen": "4r1k1/pp4pp/4p3/2R3Q1/3n4/2q4r/P1P2PPP/5RK1 w - - 1 2" + }, + { + "move": "Rd8", + "fen": "3r2k1/pp4pp/4p3/2R3Q1/3n4/2q4r/P1P2PPP/5RK1 w - - 1 2" + }, + { + "move": "Rc8", + "fen": "2r3k1/pp4pp/4p3/2R3Q1/3n4/2q4r/P1P2PPP/5RK1 w - - 1 2" + }, + { + "move": "Rb8", + "fen": "1r4k1/pp4pp/4p3/2R3Q1/3n4/2q4r/P1P2PPP/5RK1 w - - 1 2" + }, + { + "move": "Ra8", + "fen": "r5k1/pp4pp/4p3/2R3Q1/3n4/2q4r/P1P2PPP/5RK1 w - - 1 2" + }, + { + "move": "Kf7", + "fen": "5r2/pp3kpp/4p3/2R3Q1/3n4/2q4r/P1P2PPP/5RK1 w - - 1 2" + }, + { + "move": "Kh8", + "fen": "5r1k/pp4pp/4p3/2R3Q1/3n4/2q4r/P1P2PPP/5RK1 w - - 1 2" + } + ] + } + ] +} \ No newline at end of file diff --git a/testdata/integration_test.go b/testdata/integration_test.go new file mode 100644 index 0000000..24d6291 --- /dev/null +++ b/testdata/integration_test.go @@ -0,0 +1,95 @@ +package testdata + +import ( + "encoding/json" + "io" + "os" + "strings" + "testing" + + "github.com/msws/chess/board" +) + +type TestData struct { + Description string `json:"description"` + Tests []TestCases `json:"testCases"` +} + +type TestCases struct { + Start TestStart `json:"start"` + Expected []TestExpectation `json:"expected"` +} + +type TestStart struct { + Fen string `json:"fen"` + Description string `json:"description"` +} + +type TestExpectation struct { + Move string `json:"move"` + Fen string `json:"fen"` +} + +func TestJSON(t *testing.T) { + data, err := os.ReadDir(".") + + if err != nil { + t.Fatal(err) + } + + for _, entry := range data { + t.Run(entry.Name(), func(t *testing.T) { + jsonData, err := os.Open(entry.Name()) + if err != nil { + t.Error(err) + return + } + + defer jsonData.Close() + + byteData, err := io.ReadAll(jsonData) + if err != nil { + t.Error(err) + return + } + testJson(t, byteData) + }) + } +} + +func testJson(t *testing.T, bytes []byte) { + var data TestData + json.Unmarshal(bytes, &data) + t.Log(data.Description) + testData(t, data) +} + +func testData(t *testing.T, data TestData) { + for _, test := range data.Tests { + t.Log(test.Start.Description) + t.Run(strings.ReplaceAll(test.Start.Fen, "/", "."), func(t *testing.T) { + testCase(t, test.Start, test.Expected) + }) + } +} + +func testCase(t *testing.T, start TestStart, expected []TestExpectation) { + t.Run("MoveCount", func(t *testing.T) { + testMoveCount(t, start, expected) + }) +} + +func testMoveCount(t *testing.T, start TestStart, expected []TestExpectation) { + board, err := board.FromFEN(start.Fen) + + if err != nil { + t.Error(err) + return + } + + moves := board.GetMoves() + + if len(moves) != len(expected) { + t.Errorf("expected %d moves, got %d", len(expected), len(moves)) + } +} diff --git a/testdata/pawns.json b/testdata/pawns.json new file mode 100644 index 0000000..1815bb5 --- /dev/null +++ b/testdata/pawns.json @@ -0,0 +1,305 @@ +{ + "description": "Test cases involving pawns.", + "testCases": [ + { + "start": { + "fen": "7k/8/8/8/pPp5/8/8/7K b - b3 0 1", + "description": "Two possible en passant capture possibilities." + }, + "expected": [ + { + "move": "a3", + "fen": "7k/8/8/8/1Pp5/p7/8/7K w - - 0 2" + }, + { + "move": "axb3", + "fen": "7k/8/8/8/2p5/1p6/8/7K w - - 0 2" + }, + { + "move": "c3", + "fen": "7k/8/8/8/pP6/2p5/8/7K w - - 0 2" + }, + { + "move": "cxb3", + "fen": "7k/8/8/8/p7/1p6/8/7K w - - 0 2" + }, + { + "move": "Kg7", + "fen": "8/6k1/8/8/pPp5/8/8/7K w - - 1 2" + }, + { + "move": "Kh7", + "fen": "8/7k/8/8/pPp5/8/8/7K w - - 1 2" + }, + { + "move": "Kg8", + "fen": "6k1/8/8/8/pPp5/8/8/7K w - - 1 2" + } + ] + }, + { + "description": "Transpose of 7k/8/8/8/pPp5/8/8/7K b - b3 0 1", + "start": { + "fen": "7k/8/8/PpP5/8/8/8/7K w - b6 0 1", + "description": "Two possible en passant capture possibilities." + }, + "expected": [ + { + "move": "Kg1", + "fen": "7k/8/8/PpP5/8/8/8/6K1 b - - 1 1" + }, + { + "move": "Kg2", + "fen": "7k/8/8/PpP5/8/8/6K1/8 b - - 1 1" + }, + { + "move": "Kh2", + "fen": "7k/8/8/PpP5/8/8/7K/8 b - - 1 1" + }, + { + "move": "a6", + "fen": "7k/8/P7/1pP5/8/8/8/7K b - - 0 1" + }, + { + "move": "axb6", + "fen": "7k/8/1P6/2P5/8/8/8/7K b - - 0 1" + }, + { + "move": "c6", + "fen": "7k/8/2P5/Pp6/8/8/8/7K b - - 0 1" + }, + { + "move": "cxb6", + "fen": "7k/8/1P6/P7/8/8/8/7K b - - 0 1" + } + ] + }, + { + "start": { + "fen": "7k/8/8/8/pPp5/8/8/7K b - - 0 1", + "description": "Same position but without the en passant capture possibilities." + }, + "expected": [ + { + "move": "a3", + "fen": "7k/8/8/8/1Pp5/p7/8/7K w - - 0 2" + }, + { + "move": "c3", + "fen": "7k/8/8/8/pP6/2p5/8/7K w - - 0 2" + }, + { + "move": "Kg7", + "fen": "8/6k1/8/8/pPp5/8/8/7K w - - 1 2" + }, + { + "move": "Kh7", + "fen": "8/7k/8/8/pPp5/8/8/7K w - - 1 2" + }, + { + "move": "Kg8", + "fen": "6k1/8/8/8/pPp5/8/8/7K w - - 1 2" + } + ] + }, + { + "description": "Transpose of 7k/8/8/8/pPp5/8/8/7K b - - 0 1", + "start": { + "fen": "7k/8/8/PpP5/8/8/8/7K w - - 0 1", + "description": "Same position but without the en passant capture possibilities." + }, + "expected": [ + { + "move": "Kg1", + "fen": "7k/8/8/PpP5/8/8/8/6K1 b - - 1 1" + }, + { + "move": "Kg2", + "fen": "7k/8/8/PpP5/8/8/6K1/8 b - - 1 1" + }, + { + "move": "Kh2", + "fen": "7k/8/8/PpP5/8/8/7K/8 b - - 1 1" + }, + { + "move": "a6", + "fen": "7k/8/P7/1pP5/8/8/8/7K b - - 0 1" + }, + { + "move": "c6", + "fen": "7k/8/2P5/Pp6/8/8/8/7K b - - 0 1" + } + ] + }, + { + "start": { + "fen": "8/4k3/1p1p1p1p/pPpPpPpP/P1P1P1P1/8/5K2/8 w - - 0 1", + "description": "Full set of pawns but no moves." + }, + "expected": [ + { + "move": "Ke1", + "fen": "8/4k3/1p1p1p1p/pPpPpPpP/P1P1P1P1/8/8/4K3 b - - 1 1" + }, + { + "move": "Kf1", + "fen": "8/4k3/1p1p1p1p/pPpPpPpP/P1P1P1P1/8/8/5K2 b - - 1 1" + }, + { + "move": "Kg1", + "fen": "8/4k3/1p1p1p1p/pPpPpPpP/P1P1P1P1/8/8/6K1 b - - 1 1" + }, + { + "move": "Ke2", + "fen": "8/4k3/1p1p1p1p/pPpPpPpP/P1P1P1P1/8/4K3/8 b - - 1 1" + }, + { + "move": "Kg2", + "fen": "8/4k3/1p1p1p1p/pPpPpPpP/P1P1P1P1/8/6K1/8 b - - 1 1" + }, + { + "move": "Ke3", + "fen": "8/4k3/1p1p1p1p/pPpPpPpP/P1P1P1P1/4K3/8/8 b - - 1 1" + }, + { + "move": "Kf3", + "fen": "8/4k3/1p1p1p1p/pPpPpPpP/P1P1P1P1/5K2/8/8 b - - 1 1" + }, + { + "move": "Kg3", + "fen": "8/4k3/1p1p1p1p/pPpPpPpP/P1P1P1P1/6K1/8/8 b - - 1 1" + } + ] + }, + { + "description": "Transpose of 8/4k3/1p1p1p1p/pPpPpPpP/P1P1P1P1/8/5K2/8 w - - 0 1", + "start": { + "fen": "8/5k2/8/p1p1p1p1/PpPpPpPp/1P1P1P1P/4K3/8 b - - 0 1", + "description": "Full set of pawns but no moves." + }, + "expected": [ + { + "move": "Ke6", + "fen": "8/8/4k3/p1p1p1p1/PpPpPpPp/1P1P1P1P/4K3/8 w - - 1 2" + }, + { + "move": "Kf6", + "fen": "8/8/5k2/p1p1p1p1/PpPpPpPp/1P1P1P1P/4K3/8 w - - 1 2" + }, + { + "move": "Kg6", + "fen": "8/8/6k1/p1p1p1p1/PpPpPpPp/1P1P1P1P/4K3/8 w - - 1 2" + }, + { + "move": "Ke7", + "fen": "8/4k3/8/p1p1p1p1/PpPpPpPp/1P1P1P1P/4K3/8 w - - 1 2" + }, + { + "move": "Kg7", + "fen": "8/6k1/8/p1p1p1p1/PpPpPpPp/1P1P1P1P/4K3/8 w - - 1 2" + }, + { + "move": "Ke8", + "fen": "4k3/8/8/p1p1p1p1/PpPpPpPp/1P1P1P1P/4K3/8 w - - 1 2" + }, + { + "move": "Kf8", + "fen": "5k2/8/8/p1p1p1p1/PpPpPpPp/1P1P1P1P/4K3/8 w - - 1 2" + }, + { + "move": "Kg8", + "fen": "6k1/8/8/p1p1p1p1/PpPpPpPp/1P1P1P1P/4K3/8 w - - 1 2" + } + ] + }, + { + "start": { + "fen": "8/8/4k3/8/2pPp3/8/B7/7K b - d3 0 1", + "description": "Black has two en passant possibilities, but only one is legal." + }, + "expected": [ + { + "move": "e3", + "fen": "8/8/4k3/8/2pP4/4p3/B7/7K w - - 0 2" + }, + { + "move": "exd3", + "fen": "8/8/4k3/8/2p5/3p4/B7/7K w - - 0 2" + }, + { + "move": "Kd5", + "fen": "8/8/8/3k4/2pPp3/8/B7/7K w - - 1 2" + }, + { + "move": "Kf5", + "fen": "8/8/8/5k2/2pPp3/8/B7/7K w - - 1 2" + }, + { + "move": "Kd6", + "fen": "8/8/3k4/8/2pPp3/8/B7/7K w - - 1 2" + }, + { + "move": "Kf6", + "fen": "8/8/5k2/8/2pPp3/8/B7/7K w - - 1 2" + }, + { + "move": "Kd7", + "fen": "8/3k4/8/8/2pPp3/8/B7/7K w - - 1 2" + }, + { + "move": "Ke7", + "fen": "8/4k3/8/8/2pPp3/8/B7/7K w - - 1 2" + }, + { + "move": "Kf7", + "fen": "8/5k2/8/8/2pPp3/8/B7/7K w - - 1 2" + } + ] + }, + { + "description": "Transpose of 8/8/4k3/8/2pPp3/8/B7/7K b - d3 0 1", + "start": { + "fen": "7k/b7/8/2PpP3/8/4K3/8/8 w - d6 0 1", + "description": "White has two en passant possibilities, but only one is legal." + }, + "expected": [ + { + "move": "Kd2", + "fen": "7k/b7/8/2PpP3/8/8/3K4/8 b - - 1 1" + }, + { + "move": "Ke2", + "fen": "7k/b7/8/2PpP3/8/8/4K3/8 b - - 1 1" + }, + { + "move": "Kf2", + "fen": "7k/b7/8/2PpP3/8/8/5K2/8 b - - 1 1" + }, + { + "move": "Kd3", + "fen": "7k/b7/8/2PpP3/8/3K4/8/8 b - - 1 1" + }, + { + "move": "Kf3", + "fen": "7k/b7/8/2PpP3/8/5K2/8/8 b - - 1 1" + }, + { + "move": "Kd4", + "fen": "7k/b7/8/2PpP3/3K4/8/8/8 b - - 1 1" + }, + { + "move": "Kf4", + "fen": "7k/b7/8/2PpP3/5K2/8/8/8 b - - 1 1" + }, + { + "move": "e6", + "fen": "7k/b7/4P3/2Pp4/8/4K3/8/8 b - - 0 1" + }, + { + "move": "exd6", + "fen": "7k/b7/3P4/2P5/8/4K3/8/8 b - - 0 1" + } + ] + } + ] +} \ No newline at end of file diff --git a/testdata/promotions.json b/testdata/promotions.json new file mode 100644 index 0000000..be74a87 --- /dev/null +++ b/testdata/promotions.json @@ -0,0 +1,1317 @@ +{ + "description": "Test cases involving pawn promotions.", + "testCases": [ + { + "start": { + "fen": "1k6/5P2/8/8/8/8/8/4K3 w - - 20 1", + "description": "A simple promotion, with some chances to check opposing king." + }, + "expected": [ + { + "move": "Kd1", + "fen": "1k6/5P2/8/8/8/8/8/3K4 b - - 21 1" + }, + { + "move": "Kf1", + "fen": "1k6/5P2/8/8/8/8/8/5K2 b - - 21 1" + }, + { + "move": "Kd2", + "fen": "1k6/5P2/8/8/8/8/3K4/8 b - - 21 1" + }, + { + "move": "Ke2", + "fen": "1k6/5P2/8/8/8/8/4K3/8 b - - 21 1" + }, + { + "move": "Kf2", + "fen": "1k6/5P2/8/8/8/8/5K2/8 b - - 21 1" + }, + { + "move": "f8=Q+", + "fen": "1k3Q2/8/8/8/8/8/8/4K3 b - - 0 1" + }, + { + "move": "f8=R+", + "fen": "1k3R2/8/8/8/8/8/8/4K3 b - - 0 1" + }, + { + "move": "f8=N", + "fen": "1k3N2/8/8/8/8/8/8/4K3 b - - 0 1" + }, + { + "move": "f8=B", + "fen": "1k3B2/8/8/8/8/8/8/4K3 b - - 0 1" + } + ] + }, + { + "description": "Transpose of 1k6/5P2/8/8/8/8/8/4K3 w - - 20 1", + "start": { + "fen": "4k3/8/8/8/8/8/5p2/1K6 b - - 20 1", + "description": "A simple promotion, with some chances to check opposing king." + }, + "expected": [ + { + "move": "f1=Q+", + "fen": "4k3/8/8/8/8/8/8/1K3q2 w - - 0 2" + }, + { + "move": "f1=R+", + "fen": "4k3/8/8/8/8/8/8/1K3r2 w - - 0 2" + }, + { + "move": "f1=N", + "fen": "4k3/8/8/8/8/8/8/1K3n2 w - - 0 2" + }, + { + "move": "f1=B", + "fen": "4k3/8/8/8/8/8/8/1K3b2 w - - 0 2" + }, + { + "move": "Kd7", + "fen": "8/3k4/8/8/8/8/5p2/1K6 w - - 21 2" + }, + { + "move": "Ke7", + "fen": "8/4k3/8/8/8/8/5p2/1K6 w - - 21 2" + }, + { + "move": "Kf7", + "fen": "8/5k2/8/8/8/8/5p2/1K6 w - - 21 2" + }, + { + "move": "Kd8", + "fen": "3k4/8/8/8/8/8/5p2/1K6 w - - 21 2" + }, + { + "move": "Kf8", + "fen": "5k2/8/8/8/8/8/5p2/1K6 w - - 21 2" + } + ] + }, + { + "start": { + "fen": "3k4/8/1K6/8/8/8/pppppppp/RRRRRRRR b - - 0 1", + "description": "Eight black pawns all promoting via capture." + }, + "expected": [ + { + "move": "axb1=Q", + "fen": "3k4/8/1K6/8/8/8/1ppppppp/RqRRRRRR w - - 0 2" + }, + { + "move": "axb1=R", + "fen": "3k4/8/1K6/8/8/8/1ppppppp/RrRRRRRR w - - 0 2" + }, + { + "move": "axb1=N", + "fen": "3k4/8/1K6/8/8/8/1ppppppp/RnRRRRRR w - - 0 2" + }, + { + "move": "axb1=B", + "fen": "3k4/8/1K6/8/8/8/1ppppppp/RbRRRRRR w - - 0 2" + }, + { + "move": "bxa1=Q", + "fen": "3k4/8/1K6/8/8/8/p1pppppp/qRRRRRRR w - - 0 2" + }, + { + "move": "bxa1=R", + "fen": "3k4/8/1K6/8/8/8/p1pppppp/rRRRRRRR w - - 0 2" + }, + { + "move": "bxa1=N", + "fen": "3k4/8/1K6/8/8/8/p1pppppp/nRRRRRRR w - - 0 2" + }, + { + "move": "bxa1=B", + "fen": "3k4/8/1K6/8/8/8/p1pppppp/bRRRRRRR w - - 0 2" + }, + { + "move": "bxc1=Q", + "fen": "3k4/8/1K6/8/8/8/p1pppppp/RRqRRRRR w - - 0 2" + }, + { + "move": "bxc1=R", + "fen": "3k4/8/1K6/8/8/8/p1pppppp/RRrRRRRR w - - 0 2" + }, + { + "move": "bxc1=N", + "fen": "3k4/8/1K6/8/8/8/p1pppppp/RRnRRRRR w - - 0 2" + }, + { + "move": "bxc1=B", + "fen": "3k4/8/1K6/8/8/8/p1pppppp/RRbRRRRR w - - 0 2" + }, + { + "move": "cxb1=Q", + "fen": "3k4/8/1K6/8/8/8/pp1ppppp/RqRRRRRR w - - 0 2" + }, + { + "move": "cxb1=R", + "fen": "3k4/8/1K6/8/8/8/pp1ppppp/RrRRRRRR w - - 0 2" + }, + { + "move": "cxb1=N", + "fen": "3k4/8/1K6/8/8/8/pp1ppppp/RnRRRRRR w - - 0 2" + }, + { + "move": "cxb1=B", + "fen": "3k4/8/1K6/8/8/8/pp1ppppp/RbRRRRRR w - - 0 2" + }, + { + "move": "cxd1=Q", + "fen": "3k4/8/1K6/8/8/8/pp1ppppp/RRRqRRRR w - - 0 2" + }, + { + "move": "cxd1=R", + "fen": "3k4/8/1K6/8/8/8/pp1ppppp/RRRrRRRR w - - 0 2" + }, + { + "move": "cxd1=N", + "fen": "3k4/8/1K6/8/8/8/pp1ppppp/RRRnRRRR w - - 0 2" + }, + { + "move": "cxd1=B", + "fen": "3k4/8/1K6/8/8/8/pp1ppppp/RRRbRRRR w - - 0 2" + }, + { + "move": "exd1=Q", + "fen": "3k4/8/1K6/8/8/8/pppp1ppp/RRRqRRRR w - - 0 2" + }, + { + "move": "exd1=R", + "fen": "3k4/8/1K6/8/8/8/pppp1ppp/RRRrRRRR w - - 0 2" + }, + { + "move": "exd1=N", + "fen": "3k4/8/1K6/8/8/8/pppp1ppp/RRRnRRRR w - - 0 2" + }, + { + "move": "exd1=B", + "fen": "3k4/8/1K6/8/8/8/pppp1ppp/RRRbRRRR w - - 0 2" + }, + { + "move": "exf1=Q", + "fen": "3k4/8/1K6/8/8/8/pppp1ppp/RRRRRqRR w - - 0 2" + }, + { + "move": "exf1=R", + "fen": "3k4/8/1K6/8/8/8/pppp1ppp/RRRRRrRR w - - 0 2" + }, + { + "move": "exf1=N", + "fen": "3k4/8/1K6/8/8/8/pppp1ppp/RRRRRnRR w - - 0 2" + }, + { + "move": "exf1=B", + "fen": "3k4/8/1K6/8/8/8/pppp1ppp/RRRRRbRR w - - 0 2" + }, + { + "move": "fxe1=Q", + "fen": "3k4/8/1K6/8/8/8/ppppp1pp/RRRRqRRR w - - 0 2" + }, + { + "move": "fxe1=R", + "fen": "3k4/8/1K6/8/8/8/ppppp1pp/RRRRrRRR w - - 0 2" + }, + { + "move": "fxe1=N", + "fen": "3k4/8/1K6/8/8/8/ppppp1pp/RRRRnRRR w - - 0 2" + }, + { + "move": "fxe1=B", + "fen": "3k4/8/1K6/8/8/8/ppppp1pp/RRRRbRRR w - - 0 2" + }, + { + "move": "fxg1=Q+", + "fen": "3k4/8/1K6/8/8/8/ppppp1pp/RRRRRRqR w - - 0 2" + }, + { + "move": "fxg1=R", + "fen": "3k4/8/1K6/8/8/8/ppppp1pp/RRRRRRrR w - - 0 2" + }, + { + "move": "fxg1=N", + "fen": "3k4/8/1K6/8/8/8/ppppp1pp/RRRRRRnR w - - 0 2" + }, + { + "move": "fxg1=B+", + "fen": "3k4/8/1K6/8/8/8/ppppp1pp/RRRRRRbR w - - 0 2" + }, + { + "move": "gxf1=Q", + "fen": "3k4/8/1K6/8/8/8/pppppp1p/RRRRRqRR w - - 0 2" + }, + { + "move": "gxf1=R", + "fen": "3k4/8/1K6/8/8/8/pppppp1p/RRRRRrRR w - - 0 2" + }, + { + "move": "gxf1=N", + "fen": "3k4/8/1K6/8/8/8/pppppp1p/RRRRRnRR w - - 0 2" + }, + { + "move": "gxf1=B", + "fen": "3k4/8/1K6/8/8/8/pppppp1p/RRRRRbRR w - - 0 2" + }, + { + "move": "gxh1=Q", + "fen": "3k4/8/1K6/8/8/8/pppppp1p/RRRRRRRq w - - 0 2" + }, + { + "move": "gxh1=R", + "fen": "3k4/8/1K6/8/8/8/pppppp1p/RRRRRRRr w - - 0 2" + }, + { + "move": "gxh1=N", + "fen": "3k4/8/1K6/8/8/8/pppppp1p/RRRRRRRn w - - 0 2" + }, + { + "move": "gxh1=B", + "fen": "3k4/8/1K6/8/8/8/pppppp1p/RRRRRRRb w - - 0 2" + }, + { + "move": "hxg1=Q", + "fen": "3k4/8/1K6/8/8/8/ppppppp1/RRRRRRqR w - - 0 2" + }, + { + "move": "hxg1=R", + "fen": "3k4/8/1K6/8/8/8/ppppppp1/RRRRRRrR w - - 0 2" + }, + { + "move": "hxg1=N", + "fen": "3k4/8/1K6/8/8/8/ppppppp1/RRRRRRnR w - - 0 2" + }, + { + "move": "hxg1=B", + "fen": "3k4/8/1K6/8/8/8/ppppppp1/RRRRRRbR w - - 0 2" + }, + { + "move": "Kd7", + "fen": "8/3k4/1K6/8/8/8/pppppppp/RRRRRRRR w - - 1 2" + }, + { + "move": "Ke7", + "fen": "8/4k3/1K6/8/8/8/pppppppp/RRRRRRRR w - - 1 2" + }, + { + "move": "Kc8", + "fen": "2k5/8/1K6/8/8/8/pppppppp/RRRRRRRR w - - 1 2" + }, + { + "move": "Ke8", + "fen": "4k3/8/1K6/8/8/8/pppppppp/RRRRRRRR w - - 1 2" + } + ] + }, + { + "description": "Transpose of 3k4/8/1K6/8/8/8/pppppppp/RRRRRRRR b - - 0 1", + "start": { + "fen": "rrrrrrrr/PPPPPPPP/8/8/8/1k6/8/3K4 w - - 0 1", + "description": "Eight white pawns all promoting via capture." + }, + "expected": [ + { + "move": "Kc1", + "fen": "rrrrrrrr/PPPPPPPP/8/8/8/1k6/8/2K5 b - - 1 1" + }, + { + "move": "Ke1", + "fen": "rrrrrrrr/PPPPPPPP/8/8/8/1k6/8/4K3 b - - 1 1" + }, + { + "move": "Kd2", + "fen": "rrrrrrrr/PPPPPPPP/8/8/8/1k6/3K4/8 b - - 1 1" + }, + { + "move": "Ke2", + "fen": "rrrrrrrr/PPPPPPPP/8/8/8/1k6/4K3/8 b - - 1 1" + }, + { + "move": "axb8=Q", + "fen": "rQrrrrrr/1PPPPPPP/8/8/8/1k6/8/3K4 b - - 0 1" + }, + { + "move": "axb8=R", + "fen": "rRrrrrrr/1PPPPPPP/8/8/8/1k6/8/3K4 b - - 0 1" + }, + { + "move": "axb8=N", + "fen": "rNrrrrrr/1PPPPPPP/8/8/8/1k6/8/3K4 b - - 0 1" + }, + { + "move": "axb8=B", + "fen": "rBrrrrrr/1PPPPPPP/8/8/8/1k6/8/3K4 b - - 0 1" + }, + { + "move": "bxa8=Q", + "fen": "Qrrrrrrr/P1PPPPPP/8/8/8/1k6/8/3K4 b - - 0 1" + }, + { + "move": "bxa8=R", + "fen": "Rrrrrrrr/P1PPPPPP/8/8/8/1k6/8/3K4 b - - 0 1" + }, + { + "move": "bxa8=N", + "fen": "Nrrrrrrr/P1PPPPPP/8/8/8/1k6/8/3K4 b - - 0 1" + }, + { + "move": "bxa8=B", + "fen": "Brrrrrrr/P1PPPPPP/8/8/8/1k6/8/3K4 b - - 0 1" + }, + { + "move": "bxc8=Q", + "fen": "rrQrrrrr/P1PPPPPP/8/8/8/1k6/8/3K4 b - - 0 1" + }, + { + "move": "bxc8=R", + "fen": "rrRrrrrr/P1PPPPPP/8/8/8/1k6/8/3K4 b - - 0 1" + }, + { + "move": "bxc8=N", + "fen": "rrNrrrrr/P1PPPPPP/8/8/8/1k6/8/3K4 b - - 0 1" + }, + { + "move": "bxc8=B", + "fen": "rrBrrrrr/P1PPPPPP/8/8/8/1k6/8/3K4 b - - 0 1" + }, + { + "move": "cxb8=Q", + "fen": "rQrrrrrr/PP1PPPPP/8/8/8/1k6/8/3K4 b - - 0 1" + }, + { + "move": "cxb8=R", + "fen": "rRrrrrrr/PP1PPPPP/8/8/8/1k6/8/3K4 b - - 0 1" + }, + { + "move": "cxb8=N", + "fen": "rNrrrrrr/PP1PPPPP/8/8/8/1k6/8/3K4 b - - 0 1" + }, + { + "move": "cxb8=B", + "fen": "rBrrrrrr/PP1PPPPP/8/8/8/1k6/8/3K4 b - - 0 1" + }, + { + "move": "cxd8=Q", + "fen": "rrrQrrrr/PP1PPPPP/8/8/8/1k6/8/3K4 b - - 0 1" + }, + { + "move": "cxd8=R", + "fen": "rrrRrrrr/PP1PPPPP/8/8/8/1k6/8/3K4 b - - 0 1" + }, + { + "move": "cxd8=N", + "fen": "rrrNrrrr/PP1PPPPP/8/8/8/1k6/8/3K4 b - - 0 1" + }, + { + "move": "cxd8=B", + "fen": "rrrBrrrr/PP1PPPPP/8/8/8/1k6/8/3K4 b - - 0 1" + }, + { + "move": "exd8=Q", + "fen": "rrrQrrrr/PPPP1PPP/8/8/8/1k6/8/3K4 b - - 0 1" + }, + { + "move": "exd8=R", + "fen": "rrrRrrrr/PPPP1PPP/8/8/8/1k6/8/3K4 b - - 0 1" + }, + { + "move": "exd8=N", + "fen": "rrrNrrrr/PPPP1PPP/8/8/8/1k6/8/3K4 b - - 0 1" + }, + { + "move": "exd8=B", + "fen": "rrrBrrrr/PPPP1PPP/8/8/8/1k6/8/3K4 b - - 0 1" + }, + { + "move": "exf8=Q", + "fen": "rrrrrQrr/PPPP1PPP/8/8/8/1k6/8/3K4 b - - 0 1" + }, + { + "move": "exf8=R", + "fen": "rrrrrRrr/PPPP1PPP/8/8/8/1k6/8/3K4 b - - 0 1" + }, + { + "move": "exf8=N", + "fen": "rrrrrNrr/PPPP1PPP/8/8/8/1k6/8/3K4 b - - 0 1" + }, + { + "move": "exf8=B", + "fen": "rrrrrBrr/PPPP1PPP/8/8/8/1k6/8/3K4 b - - 0 1" + }, + { + "move": "fxe8=Q", + "fen": "rrrrQrrr/PPPPP1PP/8/8/8/1k6/8/3K4 b - - 0 1" + }, + { + "move": "fxe8=R", + "fen": "rrrrRrrr/PPPPP1PP/8/8/8/1k6/8/3K4 b - - 0 1" + }, + { + "move": "fxe8=N", + "fen": "rrrrNrrr/PPPPP1PP/8/8/8/1k6/8/3K4 b - - 0 1" + }, + { + "move": "fxe8=B", + "fen": "rrrrBrrr/PPPPP1PP/8/8/8/1k6/8/3K4 b - - 0 1" + }, + { + "move": "fxg8=Q+", + "fen": "rrrrrrQr/PPPPP1PP/8/8/8/1k6/8/3K4 b - - 0 1" + }, + { + "move": "fxg8=R", + "fen": "rrrrrrRr/PPPPP1PP/8/8/8/1k6/8/3K4 b - - 0 1" + }, + { + "move": "fxg8=N", + "fen": "rrrrrrNr/PPPPP1PP/8/8/8/1k6/8/3K4 b - - 0 1" + }, + { + "move": "fxg8=B+", + "fen": "rrrrrrBr/PPPPP1PP/8/8/8/1k6/8/3K4 b - - 0 1" + }, + { + "move": "gxf8=Q", + "fen": "rrrrrQrr/PPPPPP1P/8/8/8/1k6/8/3K4 b - - 0 1" + }, + { + "move": "gxf8=R", + "fen": "rrrrrRrr/PPPPPP1P/8/8/8/1k6/8/3K4 b - - 0 1" + }, + { + "move": "gxf8=N", + "fen": "rrrrrNrr/PPPPPP1P/8/8/8/1k6/8/3K4 b - - 0 1" + }, + { + "move": "gxf8=B", + "fen": "rrrrrBrr/PPPPPP1P/8/8/8/1k6/8/3K4 b - - 0 1" + }, + { + "move": "gxh8=Q", + "fen": "rrrrrrrQ/PPPPPP1P/8/8/8/1k6/8/3K4 b - - 0 1" + }, + { + "move": "gxh8=R", + "fen": "rrrrrrrR/PPPPPP1P/8/8/8/1k6/8/3K4 b - - 0 1" + }, + { + "move": "gxh8=N", + "fen": "rrrrrrrN/PPPPPP1P/8/8/8/1k6/8/3K4 b - - 0 1" + }, + { + "move": "gxh8=B", + "fen": "rrrrrrrB/PPPPPP1P/8/8/8/1k6/8/3K4 b - - 0 1" + }, + { + "move": "hxg8=Q", + "fen": "rrrrrrQr/PPPPPPP1/8/8/8/1k6/8/3K4 b - - 0 1" + }, + { + "move": "hxg8=R", + "fen": "rrrrrrRr/PPPPPPP1/8/8/8/1k6/8/3K4 b - - 0 1" + }, + { + "move": "hxg8=N", + "fen": "rrrrrrNr/PPPPPPP1/8/8/8/1k6/8/3K4 b - - 0 1" + }, + { + "move": "hxg8=B", + "fen": "rrrrrrBr/PPPPPPP1/8/8/8/1k6/8/3K4 b - - 0 1" + } + ] + }, + { + "start": { + "fen": "nnnnnnnn/PPPPPPPP/8/8/8/8/8/K6k w - - 0 1", + "description": "Eight white pawns all capable of promoting via capture." + }, + "expected": [ + { + "move": "Kb1", + "fen": "nnnnnnnn/PPPPPPPP/8/8/8/8/8/1K5k b - - 1 1" + }, + { + "move": "Ka2", + "fen": "nnnnnnnn/PPPPPPPP/8/8/8/8/K7/7k b - - 1 1" + }, + { + "move": "Kb2", + "fen": "nnnnnnnn/PPPPPPPP/8/8/8/8/1K6/7k b - - 1 1" + }, + { + "move": "axb8=Q", + "fen": "nQnnnnnn/1PPPPPPP/8/8/8/8/8/K6k b - - 0 1" + }, + { + "move": "axb8=R", + "fen": "nRnnnnnn/1PPPPPPP/8/8/8/8/8/K6k b - - 0 1" + }, + { + "move": "axb8=N", + "fen": "nNnnnnnn/1PPPPPPP/8/8/8/8/8/K6k b - - 0 1" + }, + { + "move": "axb8=B", + "fen": "nBnnnnnn/1PPPPPPP/8/8/8/8/8/K6k b - - 0 1" + }, + { + "move": "bxa8=Q+", + "fen": "Qnnnnnnn/P1PPPPPP/8/8/8/8/8/K6k b - - 0 1" + }, + { + "move": "bxa8=R", + "fen": "Rnnnnnnn/P1PPPPPP/8/8/8/8/8/K6k b - - 0 1" + }, + { + "move": "bxa8=N", + "fen": "Nnnnnnnn/P1PPPPPP/8/8/8/8/8/K6k b - - 0 1" + }, + { + "move": "bxa8=B+", + "fen": "Bnnnnnnn/P1PPPPPP/8/8/8/8/8/K6k b - - 0 1" + }, + { + "move": "bxc8=Q", + "fen": "nnQnnnnn/P1PPPPPP/8/8/8/8/8/K6k b - - 0 1" + }, + { + "move": "bxc8=R", + "fen": "nnRnnnnn/P1PPPPPP/8/8/8/8/8/K6k b - - 0 1" + }, + { + "move": "bxc8=N", + "fen": "nnNnnnnn/P1PPPPPP/8/8/8/8/8/K6k b - - 0 1" + }, + { + "move": "bxc8=B", + "fen": "nnBnnnnn/P1PPPPPP/8/8/8/8/8/K6k b - - 0 1" + }, + { + "move": "cxb8=Q", + "fen": "nQnnnnnn/PP1PPPPP/8/8/8/8/8/K6k b - - 0 1" + }, + { + "move": "cxb8=R", + "fen": "nRnnnnnn/PP1PPPPP/8/8/8/8/8/K6k b - - 0 1" + }, + { + "move": "cxb8=N", + "fen": "nNnnnnnn/PP1PPPPP/8/8/8/8/8/K6k b - - 0 1" + }, + { + "move": "cxb8=B", + "fen": "nBnnnnnn/PP1PPPPP/8/8/8/8/8/K6k b - - 0 1" + }, + { + "move": "cxd8=Q", + "fen": "nnnQnnnn/PP1PPPPP/8/8/8/8/8/K6k b - - 0 1" + }, + { + "move": "cxd8=R", + "fen": "nnnRnnnn/PP1PPPPP/8/8/8/8/8/K6k b - - 0 1" + }, + { + "move": "cxd8=N", + "fen": "nnnNnnnn/PP1PPPPP/8/8/8/8/8/K6k b - - 0 1" + }, + { + "move": "cxd8=B", + "fen": "nnnBnnnn/PP1PPPPP/8/8/8/8/8/K6k b - - 0 1" + }, + { + "move": "dxc8=Q", + "fen": "nnQnnnnn/PPP1PPPP/8/8/8/8/8/K6k b - - 0 1" + }, + { + "move": "dxc8=R", + "fen": "nnRnnnnn/PPP1PPPP/8/8/8/8/8/K6k b - - 0 1" + }, + { + "move": "dxc8=N", + "fen": "nnNnnnnn/PPP1PPPP/8/8/8/8/8/K6k b - - 0 1" + }, + { + "move": "dxc8=B", + "fen": "nnBnnnnn/PPP1PPPP/8/8/8/8/8/K6k b - - 0 1" + }, + { + "move": "dxe8=Q", + "fen": "nnnnQnnn/PPP1PPPP/8/8/8/8/8/K6k b - - 0 1" + }, + { + "move": "dxe8=R", + "fen": "nnnnRnnn/PPP1PPPP/8/8/8/8/8/K6k b - - 0 1" + }, + { + "move": "dxe8=N", + "fen": "nnnnNnnn/PPP1PPPP/8/8/8/8/8/K6k b - - 0 1" + }, + { + "move": "dxe8=B", + "fen": "nnnnBnnn/PPP1PPPP/8/8/8/8/8/K6k b - - 0 1" + }, + { + "move": "exd8=Q", + "fen": "nnnQnnnn/PPPP1PPP/8/8/8/8/8/K6k b - - 0 1" + }, + { + "move": "exd8=R", + "fen": "nnnRnnnn/PPPP1PPP/8/8/8/8/8/K6k b - - 0 1" + }, + { + "move": "exd8=N", + "fen": "nnnNnnnn/PPPP1PPP/8/8/8/8/8/K6k b - - 0 1" + }, + { + "move": "exd8=B", + "fen": "nnnBnnnn/PPPP1PPP/8/8/8/8/8/K6k b - - 0 1" + }, + { + "move": "exf8=Q", + "fen": "nnnnnQnn/PPPP1PPP/8/8/8/8/8/K6k b - - 0 1" + }, + { + "move": "exf8=R", + "fen": "nnnnnRnn/PPPP1PPP/8/8/8/8/8/K6k b - - 0 1" + }, + { + "move": "exf8=N", + "fen": "nnnnnNnn/PPPP1PPP/8/8/8/8/8/K6k b - - 0 1" + }, + { + "move": "exf8=B", + "fen": "nnnnnBnn/PPPP1PPP/8/8/8/8/8/K6k b - - 0 1" + }, + { + "move": "fxe8=Q", + "fen": "nnnnQnnn/PPPPP1PP/8/8/8/8/8/K6k b - - 0 1" + }, + { + "move": "fxe8=R", + "fen": "nnnnRnnn/PPPPP1PP/8/8/8/8/8/K6k b - - 0 1" + }, + { + "move": "fxe8=N", + "fen": "nnnnNnnn/PPPPP1PP/8/8/8/8/8/K6k b - - 0 1" + }, + { + "move": "fxe8=B", + "fen": "nnnnBnnn/PPPPP1PP/8/8/8/8/8/K6k b - - 0 1" + }, + { + "move": "fxg8=Q", + "fen": "nnnnnnQn/PPPPP1PP/8/8/8/8/8/K6k b - - 0 1" + }, + { + "move": "fxg8=R", + "fen": "nnnnnnRn/PPPPP1PP/8/8/8/8/8/K6k b - - 0 1" + }, + { + "move": "fxg8=N", + "fen": "nnnnnnNn/PPPPP1PP/8/8/8/8/8/K6k b - - 0 1" + }, + { + "move": "fxg8=B", + "fen": "nnnnnnBn/PPPPP1PP/8/8/8/8/8/K6k b - - 0 1" + }, + { + "move": "gxf8=Q", + "fen": "nnnnnQnn/PPPPPP1P/8/8/8/8/8/K6k b - - 0 1" + }, + { + "move": "gxf8=R", + "fen": "nnnnnRnn/PPPPPP1P/8/8/8/8/8/K6k b - - 0 1" + }, + { + "move": "gxf8=N", + "fen": "nnnnnNnn/PPPPPP1P/8/8/8/8/8/K6k b - - 0 1" + }, + { + "move": "gxf8=B", + "fen": "nnnnnBnn/PPPPPP1P/8/8/8/8/8/K6k b - - 0 1" + }, + { + "move": "gxh8=Q", + "fen": "nnnnnnnQ/PPPPPP1P/8/8/8/8/8/K6k b - - 0 1" + }, + { + "move": "gxh8=R", + "fen": "nnnnnnnR/PPPPPP1P/8/8/8/8/8/K6k b - - 0 1" + }, + { + "move": "gxh8=N", + "fen": "nnnnnnnN/PPPPPP1P/8/8/8/8/8/K6k b - - 0 1" + }, + { + "move": "gxh8=B", + "fen": "nnnnnnnB/PPPPPP1P/8/8/8/8/8/K6k b - - 0 1" + }, + { + "move": "hxg8=Q", + "fen": "nnnnnnQn/PPPPPPP1/8/8/8/8/8/K6k b - - 0 1" + }, + { + "move": "hxg8=R", + "fen": "nnnnnnRn/PPPPPPP1/8/8/8/8/8/K6k b - - 0 1" + }, + { + "move": "hxg8=N", + "fen": "nnnnnnNn/PPPPPPP1/8/8/8/8/8/K6k b - - 0 1" + }, + { + "move": "hxg8=B", + "fen": "nnnnnnBn/PPPPPPP1/8/8/8/8/8/K6k b - - 0 1" + } + ] + }, + { + "description": "Transpose of nnnnnnnn/PPPPPPPP/8/8/8/8/8/K6k w - - 0 1", + "start": { + "fen": "k6K/8/8/8/8/8/pppppppp/NNNNNNNN b - - 0 1", + "description": "Eight black pawns all capable of promoting via capture." + }, + "expected": [ + { + "move": "axb1=Q", + "fen": "k6K/8/8/8/8/8/1ppppppp/NqNNNNNN w - - 0 2" + }, + { + "move": "axb1=R", + "fen": "k6K/8/8/8/8/8/1ppppppp/NrNNNNNN w - - 0 2" + }, + { + "move": "axb1=N", + "fen": "k6K/8/8/8/8/8/1ppppppp/NnNNNNNN w - - 0 2" + }, + { + "move": "axb1=B", + "fen": "k6K/8/8/8/8/8/1ppppppp/NbNNNNNN w - - 0 2" + }, + { + "move": "bxa1=Q+", + "fen": "k6K/8/8/8/8/8/p1pppppp/qNNNNNNN w - - 0 2" + }, + { + "move": "bxa1=R", + "fen": "k6K/8/8/8/8/8/p1pppppp/rNNNNNNN w - - 0 2" + }, + { + "move": "bxa1=N", + "fen": "k6K/8/8/8/8/8/p1pppppp/nNNNNNNN w - - 0 2" + }, + { + "move": "bxa1=B+", + "fen": "k6K/8/8/8/8/8/p1pppppp/bNNNNNNN w - - 0 2" + }, + { + "move": "bxc1=Q", + "fen": "k6K/8/8/8/8/8/p1pppppp/NNqNNNNN w - - 0 2" + }, + { + "move": "bxc1=R", + "fen": "k6K/8/8/8/8/8/p1pppppp/NNrNNNNN w - - 0 2" + }, + { + "move": "bxc1=N", + "fen": "k6K/8/8/8/8/8/p1pppppp/NNnNNNNN w - - 0 2" + }, + { + "move": "bxc1=B", + "fen": "k6K/8/8/8/8/8/p1pppppp/NNbNNNNN w - - 0 2" + }, + { + "move": "cxb1=Q", + "fen": "k6K/8/8/8/8/8/pp1ppppp/NqNNNNNN w - - 0 2" + }, + { + "move": "cxb1=R", + "fen": "k6K/8/8/8/8/8/pp1ppppp/NrNNNNNN w - - 0 2" + }, + { + "move": "cxb1=N", + "fen": "k6K/8/8/8/8/8/pp1ppppp/NnNNNNNN w - - 0 2" + }, + { + "move": "cxb1=B", + "fen": "k6K/8/8/8/8/8/pp1ppppp/NbNNNNNN w - - 0 2" + }, + { + "move": "cxd1=Q", + "fen": "k6K/8/8/8/8/8/pp1ppppp/NNNqNNNN w - - 0 2" + }, + { + "move": "cxd1=R", + "fen": "k6K/8/8/8/8/8/pp1ppppp/NNNrNNNN w - - 0 2" + }, + { + "move": "cxd1=N", + "fen": "k6K/8/8/8/8/8/pp1ppppp/NNNnNNNN w - - 0 2" + }, + { + "move": "cxd1=B", + "fen": "k6K/8/8/8/8/8/pp1ppppp/NNNbNNNN w - - 0 2" + }, + { + "move": "dxc1=Q", + "fen": "k6K/8/8/8/8/8/ppp1pppp/NNqNNNNN w - - 0 2" + }, + { + "move": "dxc1=R", + "fen": "k6K/8/8/8/8/8/ppp1pppp/NNrNNNNN w - - 0 2" + }, + { + "move": "dxc1=N", + "fen": "k6K/8/8/8/8/8/ppp1pppp/NNnNNNNN w - - 0 2" + }, + { + "move": "dxc1=B", + "fen": "k6K/8/8/8/8/8/ppp1pppp/NNbNNNNN w - - 0 2" + }, + { + "move": "dxe1=Q", + "fen": "k6K/8/8/8/8/8/ppp1pppp/NNNNqNNN w - - 0 2" + }, + { + "move": "dxe1=R", + "fen": "k6K/8/8/8/8/8/ppp1pppp/NNNNrNNN w - - 0 2" + }, + { + "move": "dxe1=N", + "fen": "k6K/8/8/8/8/8/ppp1pppp/NNNNnNNN w - - 0 2" + }, + { + "move": "dxe1=B", + "fen": "k6K/8/8/8/8/8/ppp1pppp/NNNNbNNN w - - 0 2" + }, + { + "move": "exd1=Q", + "fen": "k6K/8/8/8/8/8/pppp1ppp/NNNqNNNN w - - 0 2" + }, + { + "move": "exd1=R", + "fen": "k6K/8/8/8/8/8/pppp1ppp/NNNrNNNN w - - 0 2" + }, + { + "move": "exd1=N", + "fen": "k6K/8/8/8/8/8/pppp1ppp/NNNnNNNN w - - 0 2" + }, + { + "move": "exd1=B", + "fen": "k6K/8/8/8/8/8/pppp1ppp/NNNbNNNN w - - 0 2" + }, + { + "move": "exf1=Q", + "fen": "k6K/8/8/8/8/8/pppp1ppp/NNNNNqNN w - - 0 2" + }, + { + "move": "exf1=R", + "fen": "k6K/8/8/8/8/8/pppp1ppp/NNNNNrNN w - - 0 2" + }, + { + "move": "exf1=N", + "fen": "k6K/8/8/8/8/8/pppp1ppp/NNNNNnNN w - - 0 2" + }, + { + "move": "exf1=B", + "fen": "k6K/8/8/8/8/8/pppp1ppp/NNNNNbNN w - - 0 2" + }, + { + "move": "fxe1=Q", + "fen": "k6K/8/8/8/8/8/ppppp1pp/NNNNqNNN w - - 0 2" + }, + { + "move": "fxe1=R", + "fen": "k6K/8/8/8/8/8/ppppp1pp/NNNNrNNN w - - 0 2" + }, + { + "move": "fxe1=N", + "fen": "k6K/8/8/8/8/8/ppppp1pp/NNNNnNNN w - - 0 2" + }, + { + "move": "fxe1=B", + "fen": "k6K/8/8/8/8/8/ppppp1pp/NNNNbNNN w - - 0 2" + }, + { + "move": "fxg1=Q", + "fen": "k6K/8/8/8/8/8/ppppp1pp/NNNNNNqN w - - 0 2" + }, + { + "move": "fxg1=R", + "fen": "k6K/8/8/8/8/8/ppppp1pp/NNNNNNrN w - - 0 2" + }, + { + "move": "fxg1=N", + "fen": "k6K/8/8/8/8/8/ppppp1pp/NNNNNNnN w - - 0 2" + }, + { + "move": "fxg1=B", + "fen": "k6K/8/8/8/8/8/ppppp1pp/NNNNNNbN w - - 0 2" + }, + { + "move": "gxf1=Q", + "fen": "k6K/8/8/8/8/8/pppppp1p/NNNNNqNN w - - 0 2" + }, + { + "move": "gxf1=R", + "fen": "k6K/8/8/8/8/8/pppppp1p/NNNNNrNN w - - 0 2" + }, + { + "move": "gxf1=N", + "fen": "k6K/8/8/8/8/8/pppppp1p/NNNNNnNN w - - 0 2" + }, + { + "move": "gxf1=B", + "fen": "k6K/8/8/8/8/8/pppppp1p/NNNNNbNN w - - 0 2" + }, + { + "move": "gxh1=Q", + "fen": "k6K/8/8/8/8/8/pppppp1p/NNNNNNNq w - - 0 2" + }, + { + "move": "gxh1=R", + "fen": "k6K/8/8/8/8/8/pppppp1p/NNNNNNNr w - - 0 2" + }, + { + "move": "gxh1=N", + "fen": "k6K/8/8/8/8/8/pppppp1p/NNNNNNNn w - - 0 2" + }, + { + "move": "gxh1=B", + "fen": "k6K/8/8/8/8/8/pppppp1p/NNNNNNNb w - - 0 2" + }, + { + "move": "hxg1=Q", + "fen": "k6K/8/8/8/8/8/ppppppp1/NNNNNNqN w - - 0 2" + }, + { + "move": "hxg1=R", + "fen": "k6K/8/8/8/8/8/ppppppp1/NNNNNNrN w - - 0 2" + }, + { + "move": "hxg1=N", + "fen": "k6K/8/8/8/8/8/ppppppp1/NNNNNNnN w - - 0 2" + }, + { + "move": "hxg1=B", + "fen": "k6K/8/8/8/8/8/ppppppp1/NNNNNNbN w - - 0 2" + }, + { + "move": "Ka7", + "fen": "7K/k7/8/8/8/8/pppppppp/NNNNNNNN w - - 1 2" + }, + { + "move": "Kb7", + "fen": "7K/1k6/8/8/8/8/pppppppp/NNNNNNNN w - - 1 2" + }, + { + "move": "Kb8", + "fen": "1k5K/8/8/8/8/8/pppppppp/NNNNNNNN w - - 1 2" + } + ] + }, + { + "start": { + "fen": "8/ppp3p1/8/8/3p4/8/1ppp2K1/brk2Q1n b - - 12 7", + "description": "Black must block check by promotion." + }, + "expected": [ + { + "move": "d1=Q", + "fen": "8/ppp3p1/8/8/3p4/8/1pp3K1/brkq1Q1n w - - 0 8" + }, + { + "move": "d1=R", + "fen": "8/ppp3p1/8/8/3p4/8/1pp3K1/brkr1Q1n w - - 0 8" + }, + { + "move": "d1=N", + "fen": "8/ppp3p1/8/8/3p4/8/1pp3K1/brkn1Q1n w - - 0 8" + }, + { + "move": "d1=B", + "fen": "8/ppp3p1/8/8/3p4/8/1pp3K1/brkb1Q1n w - - 0 8" + } + ] + }, + { + "description": "Transpose of 8/ppp3p1/8/8/3p4/8/1ppp2K1/brk2Q1n b - - 12 7", + "start": { + "fen": "BRK2q1N/1PPP2k1/8/3P4/8/8/PPP3P1/8 w - - 12 7", + "description": "White must block check by promotion." + }, + "expected": [ + { + "move": "d8=Q", + "fen": "BRKQ1q1N/1PP3k1/8/3P4/8/8/PPP3P1/8 b - - 0 7" + }, + { + "move": "d8=R", + "fen": "BRKR1q1N/1PP3k1/8/3P4/8/8/PPP3P1/8 b - - 0 7" + }, + { + "move": "d8=N", + "fen": "BRKN1q1N/1PP3k1/8/3P4/8/8/PPP3P1/8 b - - 0 7" + }, + { + "move": "d8=B", + "fen": "BRKB1q1N/1PP3k1/8/3P4/8/8/PPP3P1/8 b - - 0 7" + } + ] + }, + { + "start": { + "fen": "5N1N/4k1P1/8/8/8/8/8/K7 w - - 0 1", + "description": "White can promote and check black king if promoting to knight." + }, + "expected": [ + { + "move": "Kb1", + "fen": "5N1N/4k1P1/8/8/8/8/8/1K6 b - - 1 1" + }, + { + "move": "Ka2", + "fen": "5N1N/4k1P1/8/8/8/8/K7/8 b - - 1 1" + }, + { + "move": "Kb2", + "fen": "5N1N/4k1P1/8/8/8/8/1K6/8 b - - 1 1" + }, + { + "move": "g8=Q", + "fen": "5NQN/4k3/8/8/8/8/8/K7 b - - 0 1" + }, + { + "move": "g8=R", + "fen": "5NRN/4k3/8/8/8/8/8/K7 b - - 0 1" + }, + { + "move": "g8=N+", + "fen": "5NNN/4k3/8/8/8/8/8/K7 b - - 0 1" + }, + { + "move": "g8=B", + "fen": "5NBN/4k3/8/8/8/8/8/K7 b - - 0 1" + }, + { + "move": "Ne6", + "fen": "7N/4k1P1/4N3/8/8/8/8/K7 b - - 1 1" + }, + { + "move": "Nfg6+", + "fen": "7N/4k1P1/6N1/8/8/8/8/K7 b - - 1 1" + }, + { + "move": "Nd7", + "fen": "7N/3Nk1P1/8/8/8/8/8/K7 b - - 1 1" + }, + { + "move": "Nh7", + "fen": "7N/4k1PN/8/8/8/8/8/K7 b - - 1 1" + }, + { + "move": "Nhg6+", + "fen": "5N2/4k1P1/6N1/8/8/8/8/K7 b - - 1 1" + }, + { + "move": "Nf7", + "fen": "5N2/4kNP1/8/8/8/8/8/K7 b - - 1 1" + } + ] + }, + { + "description": "Transpose of 5N1N/4k1P1/8/8/8/8/8/K7 w - - 0 1", + "start": { + "fen": "k7/8/8/8/8/8/4K1p1/5n1n b - - 0 1", + "description": "Black can promote and check white king if promoting to knight." + }, + "expected": [ + { + "move": "Nd2", + "fen": "k7/8/8/8/8/8/3nK1p1/7n w - - 1 2" + }, + { + "move": "Nh2", + "fen": "k7/8/8/8/8/8/4K1pn/7n w - - 1 2" + }, + { + "move": "Ne3", + "fen": "k7/8/8/8/8/4n3/4K1p1/7n w - - 1 2" + }, + { + "move": "Nfg3+", + "fen": "k7/8/8/8/8/6n1/4K1p1/7n w - - 1 2" + }, + { + "move": "Nf2", + "fen": "k7/8/8/8/8/8/4Knp1/5n2 w - - 1 2" + }, + { + "move": "Nhg3+", + "fen": "k7/8/8/8/8/6n1/4K1p1/5n2 w - - 1 2" + }, + { + "move": "g1=Q", + "fen": "k7/8/8/8/8/8/4K3/5nqn w - - 0 2" + }, + { + "move": "g1=R", + "fen": "k7/8/8/8/8/8/4K3/5nrn w - - 0 2" + }, + { + "move": "g1=N+", + "fen": "k7/8/8/8/8/8/4K3/5nnn w - - 0 2" + }, + { + "move": "g1=B", + "fen": "k7/8/8/8/8/8/4K3/5nbn w - - 0 2" + }, + { + "move": "Ka7", + "fen": "8/k7/8/8/8/8/4K1p1/5n1n w - - 1 2" + }, + { + "move": "Kb7", + "fen": "8/1k6/8/8/8/8/4K1p1/5n1n w - - 1 2" + }, + { + "move": "Kb8", + "fen": "1k6/8/8/8/8/8/4K1p1/5n1n w - - 1 2" + } + ] + }, + { + "start": { + "fen": "NBQKRBRN/PPPPPPPP/8/8/8/8/3k4/8 w - - 0 1", + "description": "White has eight pawns ready to promote, but none can." + }, + "expected": [ + { + "move": "Nb6", + "fen": "1BQKRBRN/PPPPPPPP/1N6/8/8/8/3k4/8 b - - 1 1" + }, + { + "move": "Ng6", + "fen": "NBQKRBR1/PPPPPPPP/6N1/8/8/8/3k4/8 b - - 1 1" + } + ] + }, + { + "description": "Transpose of NBQKRBRN/PPPPPPPP/8/8/8/8/3k4/8 w - - 0 1", + "start": { + "fen": "8/3K4/8/8/8/8/pppppppp/nbqkrbrn b - - 0 1", + "description": "Black has eight pawns ready to promote, but none can." + }, + "expected": [ + { + "move": "Nb3", + "fen": "8/3K4/8/8/8/1n6/pppppppp/1bqkrbrn w - - 1 2" + }, + { + "move": "Ng3", + "fen": "8/3K4/8/8/8/6n1/pppppppp/nbqkrbr1 w - - 1 2" + } + ] + }, + { + "start": { + "fen": "3K3r/2PPP3/8/2k5/8/8/8/8 w - - 0 1", + "description": "White must promote to escape check." + }, + "expected": [ + { + "move": "e8=Q", + "fen": "3KQ2r/2PP4/8/2k5/8/8/8/8 b - - 0 1" + }, + { + "move": "e8=R", + "fen": "3KR2r/2PP4/8/2k5/8/8/8/8 b - - 0 1" + }, + { + "move": "e8=N", + "fen": "3KN2r/2PP4/8/2k5/8/8/8/8 b - - 0 1" + }, + { + "move": "e8=B", + "fen": "3KB2r/2PP4/8/2k5/8/8/8/8 b - - 0 1" + } + ] + }, + { + "description": "Transpose of 3K3r/2PPP3/8/2k5/8/8/8/8 w - - 0 1", + "start": { + "fen": "8/8/8/8/2K5/8/2ppp3/3k3R b - - 0 1", + "description": "Black must promote to escape check." + }, + "expected": [ + { + "move": "e1=Q", + "fen": "8/8/8/8/2K5/8/2pp4/3kq2R w - - 0 2" + }, + { + "move": "e1=R", + "fen": "8/8/8/8/2K5/8/2pp4/3kr2R w - - 0 2" + }, + { + "move": "e1=N", + "fen": "8/8/8/8/2K5/8/2pp4/3kn2R w - - 0 2" + }, + { + "move": "e1=B", + "fen": "8/8/8/8/2K5/8/2pp4/3kb2R w - - 0 2" + } + ] + }, + { + "start": { + "fen": "q7/1PPPPPPP/8/8/8/K1k5/8/8 w - - 0 1", + "description": "White must capture and promote to escape mate." + }, + "expected": [ + { + "move": "bxa8=Q", + "fen": "Q7/2PPPPPP/8/8/8/K1k5/8/8 b - - 0 1" + }, + { + "move": "bxa8=R", + "fen": "R7/2PPPPPP/8/8/8/K1k5/8/8 b - - 0 1" + }, + { + "move": "bxa8=N", + "fen": "N7/2PPPPPP/8/8/8/K1k5/8/8 b - - 0 1" + }, + { + "move": "bxa8=B", + "fen": "B7/2PPPPPP/8/8/8/K1k5/8/8 b - - 0 1" + } + ] + }, + { + "description": "Transpose of q7/1PPPPPPP/8/8/8/K1k5/8/8 w - - 0 1", + "start": { + "fen": "8/8/k1K5/8/8/8/1ppppppp/Q7 b - - 0 1", + "description": "Black must capture and promote to escape mate." + }, + "expected": [ + { + "move": "bxa1=Q", + "fen": "8/8/k1K5/8/8/8/2pppppp/q7 w - - 0 2" + }, + { + "move": "bxa1=R", + "fen": "8/8/k1K5/8/8/8/2pppppp/r7 w - - 0 2" + }, + { + "move": "bxa1=N", + "fen": "8/8/k1K5/8/8/8/2pppppp/n7 w - - 0 2" + }, + { + "move": "bxa1=B", + "fen": "8/8/k1K5/8/8/8/2pppppp/b7 w - - 0 2" + } + ] + } + ] +} \ No newline at end of file diff --git a/testdata/stalemates.json b/testdata/stalemates.json new file mode 100644 index 0000000..b970f33 --- /dev/null +++ b/testdata/stalemates.json @@ -0,0 +1,87 @@ +{ + "testCases": [ + { + "start": { + "fen": "k7/1R6/2K5/8/8/8/8/8 b - - 0 1" + }, + "expected": [] + }, + { + "description": "Transpose of k7/1R6/2K5/8/8/8/8/8 b - - 0 1", + "start": { + "fen": "8/8/8/8/8/2k5/1r6/K7 w - - 0 1" + }, + "expected": [] + }, + { + "start": { + "fen": "k7/8/2N5/8/8/2K5/1R6/8 b - - 0 1" + }, + "expected": [] + }, + { + "description": "Transpose of k7/8/2N5/8/8/2K5/1R6/8 b - - 0 1", + "start": { + "fen": "8/1r6/2k5/8/8/2n5/8/K7 w - - 0 1" + }, + "expected": [] + }, + { + "start": { + "fen": "k7/2Q5/8/8/8/2K5/8/8 b - - 0 1" + }, + "expected": [] + }, + { + "description": "Transpose of k7/2Q5/8/8/8/2K5/8/8 b - - 0 1", + "start": { + "fen": "8/8/2k5/8/8/8/2q5/K7 w - - 0 1" + }, + "expected": [] + }, + { + "start": { + "fen": "8/8/5R2/4k1P1/3R4/2K5/8/8 b - - 0 1", + "description": "" + }, + "expected": [] + }, + { + "description": "Transpose of 8/8/5R2/4k1P1/3R4/2K5/8/8 b - - 0 1", + "start": { + "fen": "8/8/2k5/3r4/4K1p1/5r2/8/8 w - - 0 1", + "description": "" + }, + "expected": [] + }, + { + "start": { + "fen": "5bnr/4p1pq/4Qpkr/7p/7P/4P3/PPPP1PP1/RNB1KBNR b KQ - 2 10", + "description": "The shortest stalemate possible from the opening position." + }, + "expected": [] + }, + { + "description": "Transpose of 5bnr/4p1pq/4Qpkr/7p/7P/4P3/PPPP1PP1/RNB1KBNR b KQ - 2 10", + "start": { + "fen": "rnb1kbnr/pppp1pp1/4p3/7p/7P/4qPKR/4P1PQ/5BNR w kq - 2 10", + "description": "The shortest stalemate possible from the opening position." + }, + "expected": [] + }, + { + "start": { + "fen": "8/8/R7/4k3/4Pp2/2P2P2/7B/1K6 b - e3 0 1", + "description": "" + }, + "expected": [] + }, + { + "description": "Transpose of 8/8/R7/4k3/4Pp2/2P2P2/7B/1K6 b - e3 0 1", + "start": { + "fen": "1k6/7b/2p2p2/4pP2/4K3/r7/8/8 w - e6 0 1" + }, + "expected": [] + } + ] +} \ No newline at end of file diff --git a/testdata/standard.json b/testdata/standard.json new file mode 100644 index 0000000..a225aae --- /dev/null +++ b/testdata/standard.json @@ -0,0 +1,221 @@ +{ + "description": "Some common positions.", + "testCases": [ + { + "start": { + "fen": "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1", + "description": "Standard starting position." + }, + "expected": [ + { + "move": "Na3", + "fen": "rnbqkbnr/pppppppp/8/8/8/N7/PPPPPPPP/R1BQKBNR b KQkq - 1 1" + }, + { + "move": "Nc3", + "fen": "rnbqkbnr/pppppppp/8/8/8/2N5/PPPPPPPP/R1BQKBNR b KQkq - 1 1" + }, + { + "move": "Nf3", + "fen": "rnbqkbnr/pppppppp/8/8/8/5N2/PPPPPPPP/RNBQKB1R b KQkq - 1 1" + }, + { + "move": "Nh3", + "fen": "rnbqkbnr/pppppppp/8/8/8/7N/PPPPPPPP/RNBQKB1R b KQkq - 1 1" + }, + { + "move": "a3", + "fen": "rnbqkbnr/pppppppp/8/8/8/P7/1PPPPPPP/RNBQKBNR b KQkq - 0 1" + }, + { + "move": "a4", + "fen": "rnbqkbnr/pppppppp/8/8/P7/8/1PPPPPPP/RNBQKBNR b KQkq a3 0 1" + }, + { + "move": "b3", + "fen": "rnbqkbnr/pppppppp/8/8/8/1P6/P1PPPPPP/RNBQKBNR b KQkq - 0 1" + }, + { + "move": "b4", + "fen": "rnbqkbnr/pppppppp/8/8/1P6/8/P1PPPPPP/RNBQKBNR b KQkq b3 0 1" + }, + { + "move": "c3", + "fen": "rnbqkbnr/pppppppp/8/8/8/2P5/PP1PPPPP/RNBQKBNR b KQkq - 0 1" + }, + { + "move": "c4", + "fen": "rnbqkbnr/pppppppp/8/8/2P5/8/PP1PPPPP/RNBQKBNR b KQkq c3 0 1" + }, + { + "move": "d3", + "fen": "rnbqkbnr/pppppppp/8/8/8/3P4/PPP1PPPP/RNBQKBNR b KQkq - 0 1" + }, + { + "move": "d4", + "fen": "rnbqkbnr/pppppppp/8/8/3P4/8/PPP1PPPP/RNBQKBNR b KQkq d3 0 1" + }, + { + "move": "e3", + "fen": "rnbqkbnr/pppppppp/8/8/8/4P3/PPPP1PPP/RNBQKBNR b KQkq - 0 1" + }, + { + "move": "e4", + "fen": "rnbqkbnr/pppppppp/8/8/4P3/8/PPPP1PPP/RNBQKBNR b KQkq e3 0 1" + }, + { + "move": "f3", + "fen": "rnbqkbnr/pppppppp/8/8/8/5P2/PPPPP1PP/RNBQKBNR b KQkq - 0 1" + }, + { + "move": "f4", + "fen": "rnbqkbnr/pppppppp/8/8/5P2/8/PPPPP1PP/RNBQKBNR b KQkq f3 0 1" + }, + { + "move": "g3", + "fen": "rnbqkbnr/pppppppp/8/8/8/6P1/PPPPPP1P/RNBQKBNR b KQkq - 0 1" + }, + { + "move": "g4", + "fen": "rnbqkbnr/pppppppp/8/8/6P1/8/PPPPPP1P/RNBQKBNR b KQkq g3 0 1" + }, + { + "move": "h3", + "fen": "rnbqkbnr/pppppppp/8/8/8/7P/PPPPPPP1/RNBQKBNR b KQkq - 0 1" + }, + { + "move": "h4", + "fen": "rnbqkbnr/pppppppp/8/8/7P/8/PPPPPPP1/RNBQKBNR b KQkq h3 0 1" + } + ] + }, + { + "start": { + "fen": "r1bqkbnr/pppp1ppp/2n5/1B2p3/4P3/5N2/PPPP1PPP/RNBQK2R b - - 11 7", + "description": "Ruy Lopez opening." + }, + "expected": [ + { + "move": "Nb4", + "fen": "r1bqkbnr/pppp1ppp/8/1B2p3/1n2P3/5N2/PPPP1PPP/RNBQK2R w - - 12 8" + }, + { + "move": "Nd4", + "fen": "r1bqkbnr/pppp1ppp/8/1B2p3/3nP3/5N2/PPPP1PPP/RNBQK2R w - - 12 8" + }, + { + "move": "Na5", + "fen": "r1bqkbnr/pppp1ppp/8/nB2p3/4P3/5N2/PPPP1PPP/RNBQK2R w - - 12 8" + }, + { + "move": "Nce7", + "fen": "r1bqkbnr/ppppnppp/8/1B2p3/4P3/5N2/PPPP1PPP/RNBQK2R w - - 12 8" + }, + { + "move": "Nb8", + "fen": "rnbqkbnr/pppp1ppp/8/1B2p3/4P3/5N2/PPPP1PPP/RNBQK2R w - - 12 8" + }, + { + "move": "a6", + "fen": "r1bqkbnr/1ppp1ppp/p1n5/1B2p3/4P3/5N2/PPPP1PPP/RNBQK2R w - - 0 8" + }, + { + "move": "a5", + "fen": "r1bqkbnr/1ppp1ppp/2n5/pB2p3/4P3/5N2/PPPP1PPP/RNBQK2R w - a6 0 8" + }, + { + "move": "b6", + "fen": "r1bqkbnr/p1pp1ppp/1pn5/1B2p3/4P3/5N2/PPPP1PPP/RNBQK2R w - - 0 8" + }, + { + "move": "d6", + "fen": "r1bqkbnr/ppp2ppp/2np4/1B2p3/4P3/5N2/PPPP1PPP/RNBQK2R w - - 0 8" + }, + { + "move": "d5", + "fen": "r1bqkbnr/ppp2ppp/2n5/1B1pp3/4P3/5N2/PPPP1PPP/RNBQK2R w - d6 0 8" + }, + { + "move": "f6", + "fen": "r1bqkbnr/pppp2pp/2n2p2/1B2p3/4P3/5N2/PPPP1PPP/RNBQK2R w - - 0 8" + }, + { + "move": "f5", + "fen": "r1bqkbnr/pppp2pp/2n5/1B2pp2/4P3/5N2/PPPP1PPP/RNBQK2R w - f6 0 8" + }, + { + "move": "g6", + "fen": "r1bqkbnr/pppp1p1p/2n3p1/1B2p3/4P3/5N2/PPPP1PPP/RNBQK2R w - - 0 8" + }, + { + "move": "g5", + "fen": "r1bqkbnr/pppp1p1p/2n5/1B2p1p1/4P3/5N2/PPPP1PPP/RNBQK2R w - g6 0 8" + }, + { + "move": "h6", + "fen": "r1bqkbnr/pppp1pp1/2n4p/1B2p3/4P3/5N2/PPPP1PPP/RNBQK2R w - - 0 8" + }, + { + "move": "h5", + "fen": "r1bqkbnr/pppp1pp1/2n5/1B2p2p/4P3/5N2/PPPP1PPP/RNBQK2R w - h6 0 8" + }, + { + "move": "Rb8", + "fen": "1rbqkbnr/pppp1ppp/2n5/1B2p3/4P3/5N2/PPPP1PPP/RNBQK2R w - - 12 8" + }, + { + "move": "Qe7", + "fen": "r1b1kbnr/ppppqppp/2n5/1B2p3/4P3/5N2/PPPP1PPP/RNBQK2R w - - 12 8" + }, + { + "move": "Qf6", + "fen": "r1b1kbnr/pppp1ppp/2n2q2/1B2p3/4P3/5N2/PPPP1PPP/RNBQK2R w - - 12 8" + }, + { + "move": "Qg5", + "fen": "r1b1kbnr/pppp1ppp/2n5/1B2p1q1/4P3/5N2/PPPP1PPP/RNBQK2R w - - 12 8" + }, + { + "move": "Qh4", + "fen": "r1b1kbnr/pppp1ppp/2n5/1B2p3/4P2q/5N2/PPPP1PPP/RNBQK2R w - - 12 8" + }, + { + "move": "Ke7", + "fen": "r1bq1bnr/ppppkppp/2n5/1B2p3/4P3/5N2/PPPP1PPP/RNBQK2R w - - 12 8" + }, + { + "move": "Be7", + "fen": "r1bqk1nr/ppppbppp/2n5/1B2p3/4P3/5N2/PPPP1PPP/RNBQK2R w - - 12 8" + }, + { + "move": "Bd6", + "fen": "r1bqk1nr/pppp1ppp/2nb4/1B2p3/4P3/5N2/PPPP1PPP/RNBQK2R w - - 12 8" + }, + { + "move": "Bc5", + "fen": "r1bqk1nr/pppp1ppp/2n5/1Bb1p3/4P3/5N2/PPPP1PPP/RNBQK2R w - - 12 8" + }, + { + "move": "Bb4", + "fen": "r1bqk1nr/pppp1ppp/2n5/1B2p3/1b2P3/5N2/PPPP1PPP/RNBQK2R w - - 12 8" + }, + { + "move": "Ba3", + "fen": "r1bqk1nr/pppp1ppp/2n5/1B2p3/4P3/b4N2/PPPP1PPP/RNBQK2R w - - 12 8" + }, + { + "move": "Nf6", + "fen": "r1bqkb1r/pppp1ppp/2n2n2/1B2p3/4P3/5N2/PPPP1PPP/RNBQK2R w - - 12 8" + }, + { + "move": "Nh6", + "fen": "r1bqkb1r/pppp1ppp/2n4n/1B2p3/4P3/5N2/PPPP1PPP/RNBQK2R w - - 12 8" + }, + { + "move": "Nge7", + "fen": "r1bqkb1r/ppppnppp/2n5/1B2p3/4P3/5N2/PPPP1PPP/RNBQK2R w - - 12 8" + } + ] + } + ] +} \ No newline at end of file diff --git a/testdata/taxing.json b/testdata/taxing.json new file mode 100644 index 0000000..4cf3a38 --- /dev/null +++ b/testdata/taxing.json @@ -0,0 +1,4008 @@ +{ + "description": "Particularly taxing situations involving move and piece counts. Only positions that can be reached in a standard game of chess are included.", + "testCases": [ + { + "start": { + "fen": "R6R/3Q4/1Q4Q1/4Q3/2Q4Q/Q4Q2/pp1Q4/kBNN1KB1 w - - 0 1", + "description": "A position generating a very large number of possible moves." + }, + "expected": [ + { + "move": "Bxa2", + "fen": "R6R/3Q4/1Q4Q1/4Q3/2Q4Q/Q4Q2/Bp1Q4/k1NN1KB1 b - - 0 1" + }, + { + "move": "Bc2", + "fen": "R6R/3Q4/1Q4Q1/4Q3/2Q4Q/Q4Q2/ppBQ4/k1NN1KB1 b - - 1 1" + }, + { + "move": "Bd3", + "fen": "R6R/3Q4/1Q4Q1/4Q3/2Q4Q/Q2B1Q2/pp1Q4/k1NN1KB1 b - - 1 1" + }, + { + "move": "Be4", + "fen": "R6R/3Q4/1Q4Q1/4Q3/2Q1B2Q/Q4Q2/pp1Q4/k1NN1KB1 b - - 1 1" + }, + { + "move": "Bf5", + "fen": "R6R/3Q4/1Q4Q1/4QB2/2Q4Q/Q4Q2/pp1Q4/k1NN1KB1 b - - 1 1" + }, + { + "move": "Nxa2", + "fen": "R6R/3Q4/1Q4Q1/4Q3/2Q4Q/Q4Q2/Np1Q4/kB1N1KB1 b - - 0 1" + }, + { + "move": "Ne2", + "fen": "R6R/3Q4/1Q4Q1/4Q3/2Q4Q/Q4Q2/pp1QN3/kB1N1KB1 b - - 1 1" + }, + { + "move": "Nb3#", + "fen": "R6R/3Q4/1Q4Q1/4Q3/2Q4Q/QN3Q2/pp1Q4/kB1N1KB1 b - - 1 1" + }, + { + "move": "Nd3", + "fen": "R6R/3Q4/1Q4Q1/4Q3/2Q4Q/Q2N1Q2/pp1Q4/kB1N1KB1 b - - 1 1" + }, + { + "move": "Nxb2", + "fen": "R6R/3Q4/1Q4Q1/4Q3/2Q4Q/Q4Q2/pN1Q4/kBN2KB1 b - - 0 1" + }, + { + "move": "Nf2", + "fen": "R6R/3Q4/1Q4Q1/4Q3/2Q4Q/Q4Q2/pp1Q1N2/kBN2KB1 b - - 1 1" + }, + { + "move": "Nc3", + "fen": "R6R/3Q4/1Q4Q1/4Q3/2Q4Q/Q1N2Q2/pp1Q4/kBN2KB1 b - - 1 1" + }, + { + "move": "Ne3", + "fen": "R6R/3Q4/1Q4Q1/4Q3/2Q4Q/Q3NQ2/pp1Q4/kBN2KB1 b - - 1 1" + }, + { + "move": "Ke1", + "fen": "R6R/3Q4/1Q4Q1/4Q3/2Q4Q/Q4Q2/pp1Q4/kBNNK1B1 b - - 1 1" + }, + { + "move": "Ke2", + "fen": "R6R/3Q4/1Q4Q1/4Q3/2Q4Q/Q4Q2/pp1QK3/kBNN2B1 b - - 1 1" + }, + { + "move": "Kf2", + "fen": "R6R/3Q4/1Q4Q1/4Q3/2Q4Q/Q4Q2/pp1Q1K2/kBNN2B1 b - - 1 1" + }, + { + "move": "Kg2", + "fen": "R6R/3Q4/1Q4Q1/4Q3/2Q4Q/Q4Q2/pp1Q2K1/kBNN2B1 b - - 1 1" + }, + { + "move": "Bf2", + "fen": "R6R/3Q4/1Q4Q1/4Q3/2Q4Q/Q4Q2/pp1Q1B2/kBNN1K2 b - - 1 1" + }, + { + "move": "Be3", + "fen": "R6R/3Q4/1Q4Q1/4Q3/2Q4Q/Q3BQ2/pp1Q4/kBNN1K2 b - - 1 1" + }, + { + "move": "Bd4", + "fen": "R6R/3Q4/1Q4Q1/4Q3/2QB3Q/Q4Q2/pp1Q4/kBNN1K2 b - - 1 1" + }, + { + "move": "Bc5", + "fen": "R6R/3Q4/1Q4Q1/2B1Q3/2Q4Q/Q4Q2/pp1Q4/kBNN1K2 b - - 1 1" + }, + { + "move": "Bh2", + "fen": "R6R/3Q4/1Q4Q1/4Q3/2Q4Q/Q4Q2/pp1Q3B/kBNN1K2 b - - 1 1" + }, + { + "move": "Qde1", + "fen": "R6R/3Q4/1Q4Q1/4Q3/2Q4Q/Q4Q2/pp6/kBNNQKB1 b - - 1 1" + }, + { + "move": "Qdc2", + "fen": "R6R/3Q4/1Q4Q1/4Q3/2Q4Q/Q4Q2/ppQ5/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qdxb2#", + "fen": "R6R/3Q4/1Q4Q1/4Q3/2Q4Q/Q4Q2/pQ6/kBNN1KB1 b - - 0 1" + }, + { + "move": "Qde2", + "fen": "R6R/3Q4/1Q4Q1/4Q3/2Q4Q/Q4Q2/pp2Q3/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qdf2", + "fen": "R6R/3Q4/1Q4Q1/4Q3/2Q4Q/Q4Q2/pp3Q2/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qdg2", + "fen": "R6R/3Q4/1Q4Q1/4Q3/2Q4Q/Q4Q2/pp4Q1/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qdh2", + "fen": "R6R/3Q4/1Q4Q1/4Q3/2Q4Q/Q4Q2/pp5Q/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qdc3", + "fen": "R6R/3Q4/1Q4Q1/4Q3/2Q4Q/Q1Q2Q2/pp6/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qdb4", + "fen": "R6R/3Q4/1Q4Q1/4Q3/1QQ4Q/Q4Q2/pp6/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qda5", + "fen": "R6R/3Q4/1Q4Q1/Q3Q3/2Q4Q/Q4Q2/pp6/kBNN1KB1 b - - 1 1" + }, + { + "move": "Q2d3", + "fen": "R6R/3Q4/1Q4Q1/4Q3/2Q4Q/Q2Q1Q2/pp6/kBNN1KB1 b - - 1 1" + }, + { + "move": "Q2d4", + "fen": "R6R/3Q4/1Q4Q1/4Q3/2QQ3Q/Q4Q2/pp6/kBNN1KB1 b - - 1 1" + }, + { + "move": "Q2d5", + "fen": "R6R/3Q4/1Q4Q1/3QQ3/2Q4Q/Q4Q2/pp6/kBNN1KB1 b - - 1 1" + }, + { + "move": "Q2d6", + "fen": "R6R/3Q4/1Q1Q2Q1/4Q3/2Q4Q/Q4Q2/pp6/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qde3", + "fen": "R6R/3Q4/1Q4Q1/4Q3/2Q4Q/Q3QQ2/pp6/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qdf4", + "fen": "R6R/3Q4/1Q4Q1/4Q3/2Q2Q1Q/Q4Q2/pp6/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qdg5", + "fen": "R6R/3Q4/1Q4Q1/4Q1Q1/2Q4Q/Q4Q2/pp6/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qdh6", + "fen": "R6R/3Q4/1Q4QQ/4Q3/2Q4Q/Q4Q2/pp6/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qaxa2#", + "fen": "R6R/3Q4/1Q4Q1/4Q3/2Q4Q/5Q2/Qp1Q4/kBNN1KB1 b - - 0 1" + }, + { + "move": "Qaxb2#", + "fen": "R6R/3Q4/1Q4Q1/4Q3/2Q4Q/5Q2/pQ1Q4/kBNN1KB1 b - - 0 1" + }, + { + "move": "Qab3", + "fen": "R6R/3Q4/1Q4Q1/4Q3/2Q4Q/1Q3Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qac3", + "fen": "R6R/3Q4/1Q4Q1/4Q3/2Q4Q/2Q2Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qad3", + "fen": "R6R/3Q4/1Q4Q1/4Q3/2Q4Q/3Q1Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qae3", + "fen": "R6R/3Q4/1Q4Q1/4Q3/2Q4Q/4QQ2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qaa4", + "fen": "R6R/3Q4/1Q4Q1/4Q3/Q1Q4Q/5Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qaa5", + "fen": "R6R/3Q4/1Q4Q1/Q3Q3/2Q4Q/5Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qaa6", + "fen": "R6R/3Q4/QQ4Q1/4Q3/2Q4Q/5Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qaa7", + "fen": "R6R/Q2Q4/1Q4Q1/4Q3/2Q4Q/5Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qab4", + "fen": "R6R/3Q4/1Q4Q1/4Q3/1QQ4Q/5Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qac5", + "fen": "R6R/3Q4/1Q4Q1/2Q1Q3/2Q4Q/5Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qad6", + "fen": "R6R/3Q4/1Q1Q2Q1/4Q3/2Q4Q/5Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qae7", + "fen": "R6R/3QQ3/1Q4Q1/4Q3/2Q4Q/5Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qaf8", + "fen": "R4Q1R/3Q4/1Q4Q1/4Q3/2Q4Q/5Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qfe2", + "fen": "R6R/3Q4/1Q4Q1/4Q3/2Q4Q/Q7/pp1QQ3/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qff2", + "fen": "R6R/3Q4/1Q4Q1/4Q3/2Q4Q/Q7/pp1Q1Q2/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qfg2", + "fen": "R6R/3Q4/1Q4Q1/4Q3/2Q4Q/Q7/pp1Q2Q1/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qfh1", + "fen": "R6R/3Q4/1Q4Q1/4Q3/2Q4Q/Q7/pp1Q4/kBNN1KBQ b - - 1 1" + }, + { + "move": "Qfe3", + "fen": "R6R/3Q4/1Q4Q1/4Q3/2Q4Q/Q3Q3/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qfd3", + "fen": "R6R/3Q4/1Q4Q1/4Q3/2Q4Q/Q2Q4/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qfc3", + "fen": "R6R/3Q4/1Q4Q1/4Q3/2Q4Q/Q1Q5/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qfb3", + "fen": "R6R/3Q4/1Q4Q1/4Q3/2Q4Q/QQ6/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qfg3", + "fen": "R6R/3Q4/1Q4Q1/4Q3/2Q4Q/Q5Q1/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qfh3", + "fen": "R6R/3Q4/1Q4Q1/4Q3/2Q4Q/Q6Q/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qfe4", + "fen": "R6R/3Q4/1Q4Q1/4Q3/2Q1Q2Q/Q7/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qfd5", + "fen": "R6R/3Q4/1Q4Q1/3QQ3/2Q4Q/Q7/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qfc6", + "fen": "R6R/3Q4/1QQ3Q1/4Q3/2Q4Q/Q7/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qfb7", + "fen": "R6R/1Q1Q4/1Q4Q1/4Q3/2Q4Q/Q7/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qff4", + "fen": "R6R/3Q4/1Q4Q1/4Q3/2Q2Q1Q/Q7/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qff5", + "fen": "R6R/3Q4/1Q4Q1/4QQ2/2Q4Q/Q7/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qff6", + "fen": "R6R/3Q4/1Q3QQ1/4Q3/2Q4Q/Q7/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qff7", + "fen": "R6R/3Q1Q2/1Q4Q1/4Q3/2Q4Q/Q7/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qff8", + "fen": "R4Q1R/3Q4/1Q4Q1/4Q3/2Q4Q/Q7/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qfg4", + "fen": "R6R/3Q4/1Q4Q1/4Q3/2Q3QQ/Q7/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qfh5", + "fen": "R6R/3Q4/1Q4Q1/4Q2Q/2Q4Q/Q7/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qcb3", + "fen": "R6R/3Q4/1Q4Q1/4Q3/7Q/QQ3Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qcxa2#", + "fen": "R6R/3Q4/1Q4Q1/4Q3/7Q/Q4Q2/Qp1Q4/kBNN1KB1 b - - 0 1" + }, + { + "move": "Qcc3", + "fen": "R6R/3Q4/1Q4Q1/4Q3/7Q/Q1Q2Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qcc2", + "fen": "R6R/3Q4/1Q4Q1/4Q3/7Q/Q4Q2/ppQQ4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qcd3", + "fen": "R6R/3Q4/1Q4Q1/4Q3/7Q/Q2Q1Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qce2", + "fen": "R6R/3Q4/1Q4Q1/4Q3/7Q/Q4Q2/pp1QQ3/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qcb4", + "fen": "R6R/3Q4/1Q4Q1/4Q3/1Q5Q/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qca4", + "fen": "R6R/3Q4/1Q4Q1/4Q3/Q6Q/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qcd4", + "fen": "R6R/3Q4/1Q4Q1/4Q3/3Q3Q/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qce4", + "fen": "R6R/3Q4/1Q4Q1/4Q3/4Q2Q/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qcf4", + "fen": "R6R/3Q4/1Q4Q1/4Q3/5Q1Q/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qcg4", + "fen": "R6R/3Q4/1Q4Q1/4Q3/6QQ/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qcb5", + "fen": "R6R/3Q4/1Q4Q1/1Q2Q3/7Q/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qca6", + "fen": "R6R/3Q4/QQ4Q1/4Q3/7Q/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qcc5", + "fen": "R6R/3Q4/1Q4Q1/2Q1Q3/7Q/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qcc6", + "fen": "R6R/3Q4/1QQ3Q1/4Q3/7Q/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qcc7", + "fen": "R6R/2QQ4/1Q4Q1/4Q3/7Q/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qcc8", + "fen": "R1Q4R/3Q4/1Q4Q1/4Q3/7Q/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qcd5", + "fen": "R6R/3Q4/1Q4Q1/3QQ3/7Q/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qce6", + "fen": "R6R/3Q4/1Q2Q1Q1/4Q3/7Q/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qcf7", + "fen": "R6R/3Q1Q2/1Q4Q1/4Q3/7Q/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qcg8", + "fen": "R5QR/3Q4/1Q4Q1/4Q3/7Q/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qhg3", + "fen": "R6R/3Q4/1Q4Q1/4Q3/2Q5/Q4QQ1/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qhf2", + "fen": "R6R/3Q4/1Q4Q1/4Q3/2Q5/Q4Q2/pp1Q1Q2/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qhe1", + "fen": "R6R/3Q4/1Q4Q1/4Q3/2Q5/Q4Q2/pp1Q4/kBNNQKB1 b - - 1 1" + }, + { + "move": "Qhh3", + "fen": "R6R/3Q4/1Q4Q1/4Q3/2Q5/Q4Q1Q/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qhh2", + "fen": "R6R/3Q4/1Q4Q1/4Q3/2Q5/Q4Q2/pp1Q3Q/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qhh1", + "fen": "R6R/3Q4/1Q4Q1/4Q3/2Q5/Q4Q2/pp1Q4/kBNN1KBQ b - - 1 1" + }, + { + "move": "Qhg4", + "fen": "R6R/3Q4/1Q4Q1/4Q3/2Q3Q1/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qhf4", + "fen": "R6R/3Q4/1Q4Q1/4Q3/2Q2Q2/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qhe4", + "fen": "R6R/3Q4/1Q4Q1/4Q3/2Q1Q3/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qhd4", + "fen": "R6R/3Q4/1Q4Q1/4Q3/2QQ4/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qhg5", + "fen": "R6R/3Q4/1Q4Q1/4Q1Q1/2Q5/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qhf6", + "fen": "R6R/3Q4/1Q3QQ1/4Q3/2Q5/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qhe7", + "fen": "R6R/3QQ3/1Q4Q1/4Q3/2Q5/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qhd8", + "fen": "R2Q3R/3Q4/1Q4Q1/4Q3/2Q5/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qhh5", + "fen": "R6R/3Q4/1Q4Q1/4Q2Q/2Q5/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qhh6", + "fen": "R6R/3Q4/1Q4QQ/4Q3/2Q5/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qhh7", + "fen": "R6R/3Q3Q/1Q4Q1/4Q3/2Q5/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qed4", + "fen": "R6R/3Q4/1Q4Q1/8/2QQ3Q/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qec3", + "fen": "R6R/3Q4/1Q4Q1/8/2Q4Q/Q1Q2Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qexb2#", + "fen": "R6R/3Q4/1Q4Q1/8/2Q4Q/Q4Q2/pQ1Q4/kBNN1KB1 b - - 0 1" + }, + { + "move": "Qee4", + "fen": "R6R/3Q4/1Q4Q1/8/2Q1Q2Q/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qee3", + "fen": "R6R/3Q4/1Q4Q1/8/2Q4Q/Q3QQ2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qee2", + "fen": "R6R/3Q4/1Q4Q1/8/2Q4Q/Q4Q2/pp1QQ3/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qee1", + "fen": "R6R/3Q4/1Q4Q1/8/2Q4Q/Q4Q2/pp1Q4/kBNNQKB1 b - - 1 1" + }, + { + "move": "Qef4", + "fen": "R6R/3Q4/1Q4Q1/8/2Q2Q1Q/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qeg3", + "fen": "R6R/3Q4/1Q4Q1/8/2Q4Q/Q4QQ1/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qeh2", + "fen": "R6R/3Q4/1Q4Q1/8/2Q4Q/Q4Q2/pp1Q3Q/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qed5", + "fen": "R6R/3Q4/1Q4Q1/3Q4/2Q4Q/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qec5", + "fen": "R6R/3Q4/1Q4Q1/2Q5/2Q4Q/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qeb5", + "fen": "R6R/3Q4/1Q4Q1/1Q6/2Q4Q/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qea5", + "fen": "R6R/3Q4/1Q4Q1/Q7/2Q4Q/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qef5", + "fen": "R6R/3Q4/1Q4Q1/5Q2/2Q4Q/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qeg5", + "fen": "R6R/3Q4/1Q4Q1/6Q1/2Q4Q/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qeh5", + "fen": "R6R/3Q4/1Q4Q1/7Q/2Q4Q/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qed6", + "fen": "R6R/3Q4/1Q1Q2Q1/8/2Q4Q/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qec7", + "fen": "R6R/2QQ4/1Q4Q1/8/2Q4Q/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qeb8", + "fen": "RQ5R/3Q4/1Q4Q1/8/2Q4Q/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qee6", + "fen": "R6R/3Q4/1Q2Q1Q1/8/2Q4Q/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qee7", + "fen": "R6R/3QQ3/1Q4Q1/8/2Q4Q/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qee8", + "fen": "R3Q2R/3Q4/1Q4Q1/8/2Q4Q/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qef6", + "fen": "R6R/3Q4/1Q3QQ1/8/2Q4Q/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qeg7", + "fen": "R6R/3Q2Q1/1Q4Q1/8/2Q4Q/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qba5", + "fen": "R6R/3Q4/6Q1/Q3Q3/2Q4Q/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qbb5", + "fen": "R6R/3Q4/6Q1/1Q2Q3/2Q4Q/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qbb4", + "fen": "R6R/3Q4/6Q1/4Q3/1QQ4Q/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qbb3", + "fen": "R6R/3Q4/6Q1/4Q3/2Q4Q/QQ3Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qbxb2#", + "fen": "R6R/3Q4/6Q1/4Q3/2Q4Q/Q4Q2/pQ1Q4/kBNN1KB1 b - - 0 1" + }, + { + "move": "Qbc5", + "fen": "R6R/3Q4/6Q1/2Q1Q3/2Q4Q/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qbd4", + "fen": "R6R/3Q4/6Q1/4Q3/2QQ3Q/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qbe3", + "fen": "R6R/3Q4/6Q1/4Q3/2Q4Q/Q3QQ2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qbf2", + "fen": "R6R/3Q4/6Q1/4Q3/2Q4Q/Q4Q2/pp1Q1Q2/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qba6", + "fen": "R6R/3Q4/Q5Q1/4Q3/2Q4Q/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qbc6", + "fen": "R6R/3Q4/2Q3Q1/4Q3/2Q4Q/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qbd6", + "fen": "R6R/3Q4/3Q2Q1/4Q3/2Q4Q/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qbe6", + "fen": "R6R/3Q4/4Q1Q1/4Q3/2Q4Q/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qbf6", + "fen": "R6R/3Q4/5QQ1/4Q3/2Q4Q/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qba7", + "fen": "R6R/Q2Q4/6Q1/4Q3/2Q4Q/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qbb7", + "fen": "R6R/1Q1Q4/6Q1/4Q3/2Q4Q/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qbb8", + "fen": "RQ5R/3Q4/6Q1/4Q3/2Q4Q/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qbc7", + "fen": "R6R/2QQ4/6Q1/4Q3/2Q4Q/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qbd8", + "fen": "R2Q3R/3Q4/6Q1/4Q3/2Q4Q/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qgf5", + "fen": "R6R/3Q4/1Q6/4QQ2/2Q4Q/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qge4", + "fen": "R6R/3Q4/1Q6/4Q3/2Q1Q2Q/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qgd3", + "fen": "R6R/3Q4/1Q6/4Q3/2Q4Q/Q2Q1Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qgc2", + "fen": "R6R/3Q4/1Q6/4Q3/2Q4Q/Q4Q2/ppQQ4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qgg5", + "fen": "R6R/3Q4/1Q6/4Q1Q1/2Q4Q/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qgg4", + "fen": "R6R/3Q4/1Q6/4Q3/2Q3QQ/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qgg3", + "fen": "R6R/3Q4/1Q6/4Q3/2Q4Q/Q4QQ1/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qgg2", + "fen": "R6R/3Q4/1Q6/4Q3/2Q4Q/Q4Q2/pp1Q2Q1/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qgh5", + "fen": "R6R/3Q4/1Q6/4Q2Q/2Q4Q/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qgf6", + "fen": "R6R/3Q4/1Q3Q2/4Q3/2Q4Q/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qge6", + "fen": "R6R/3Q4/1Q2Q3/4Q3/2Q4Q/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qgd6", + "fen": "R6R/3Q4/1Q1Q4/4Q3/2Q4Q/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qgc6", + "fen": "R6R/3Q4/1QQ5/4Q3/2Q4Q/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qgh6", + "fen": "R6R/3Q4/1Q5Q/4Q3/2Q4Q/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qgf7", + "fen": "R6R/3Q1Q2/1Q6/4Q3/2Q4Q/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qge8", + "fen": "R3Q2R/3Q4/1Q6/4Q3/2Q4Q/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qgg7", + "fen": "R6R/3Q2Q1/1Q6/4Q3/2Q4Q/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qgg8", + "fen": "R5QR/3Q4/1Q6/4Q3/2Q4Q/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qgh7", + "fen": "R6R/3Q3Q/1Q6/4Q3/2Q4Q/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qdc6", + "fen": "R6R/8/1QQ3Q1/4Q3/2Q4Q/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qdb5", + "fen": "R6R/8/1Q4Q1/1Q2Q3/2Q4Q/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qda4", + "fen": "R6R/8/1Q4Q1/4Q3/Q1Q4Q/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Q7d6", + "fen": "R6R/8/1Q1Q2Q1/4Q3/2Q4Q/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Q7d5", + "fen": "R6R/8/1Q4Q1/3QQ3/2Q4Q/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Q7d4", + "fen": "R6R/8/1Q4Q1/4Q3/2QQ3Q/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Q7d3", + "fen": "R6R/8/1Q4Q1/4Q3/2Q4Q/Q2Q1Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qde6", + "fen": "R6R/8/1Q2Q1Q1/4Q3/2Q4Q/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qdf5", + "fen": "R6R/8/1Q4Q1/4QQ2/2Q4Q/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qdg4", + "fen": "R6R/8/1Q4Q1/4Q3/2Q3QQ/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qdh3", + "fen": "R6R/8/1Q4Q1/4Q3/2Q4Q/Q4Q1Q/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qdc7", + "fen": "R6R/2Q5/1Q4Q1/4Q3/2Q4Q/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qdb7", + "fen": "R6R/1Q6/1Q4Q1/4Q3/2Q4Q/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qda7", + "fen": "R6R/Q7/1Q4Q1/4Q3/2Q4Q/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qde7", + "fen": "R6R/4Q3/1Q4Q1/4Q3/2Q4Q/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qdf7", + "fen": "R6R/5Q2/1Q4Q1/4Q3/2Q4Q/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qdg7", + "fen": "R6R/6Q1/1Q4Q1/4Q3/2Q4Q/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qdh7", + "fen": "R6R/7Q/1Q4Q1/4Q3/2Q4Q/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qdc8", + "fen": "R1Q4R/8/1Q4Q1/4Q3/2Q4Q/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qdd8", + "fen": "R2Q3R/8/1Q4Q1/4Q3/2Q4Q/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Qde8", + "fen": "R3Q2R/8/1Q4Q1/4Q3/2Q4Q/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Ra7", + "fen": "7R/R2Q4/1Q4Q1/4Q3/2Q4Q/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Ra6", + "fen": "7R/3Q4/RQ4Q1/4Q3/2Q4Q/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Ra5", + "fen": "7R/3Q4/1Q4Q1/R3Q3/2Q4Q/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Ra4", + "fen": "7R/3Q4/1Q4Q1/4Q3/R1Q4Q/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Rab8", + "fen": "1R5R/3Q4/1Q4Q1/4Q3/2Q4Q/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Rac8", + "fen": "2R4R/3Q4/1Q4Q1/4Q3/2Q4Q/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Rad8", + "fen": "3R3R/3Q4/1Q4Q1/4Q3/2Q4Q/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Rae8", + "fen": "4R2R/3Q4/1Q4Q1/4Q3/2Q4Q/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Raf8", + "fen": "5R1R/3Q4/1Q4Q1/4Q3/2Q4Q/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Rag8", + "fen": "6RR/3Q4/1Q4Q1/4Q3/2Q4Q/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Rh7", + "fen": "R7/3Q3R/1Q4Q1/4Q3/2Q4Q/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Rh6", + "fen": "R7/3Q4/1Q4QR/4Q3/2Q4Q/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Rh5", + "fen": "R7/3Q4/1Q4Q1/4Q2R/2Q4Q/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Rhg8", + "fen": "R5R1/3Q4/1Q4Q1/4Q3/2Q4Q/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Rhf8", + "fen": "R4R2/3Q4/1Q4Q1/4Q3/2Q4Q/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Rhe8", + "fen": "R3R3/3Q4/1Q4Q1/4Q3/2Q4Q/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Rhd8", + "fen": "R2R4/3Q4/1Q4Q1/4Q3/2Q4Q/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Rhc8", + "fen": "R1R5/3Q4/1Q4Q1/4Q3/2Q4Q/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + }, + { + "move": "Rhb8", + "fen": "RR6/3Q4/1Q4Q1/4Q3/2Q4Q/Q4Q2/pp1Q4/kBNN1KB1 b - - 1 1" + } + ] + }, + { + "description": "Transpose of R6R/3Q4/1Q4Q1/4Q3/2Q4Q/Q4Q2/pp1Q4/kBNN1KB1 w - - 0 1", + "start": { + "fen": "Kbnn1kb1/PP1q4/q4q2/2q4q/4q3/1q4q1/3q4/r6r b - - 0 1", + "description": "A position generating a very large number of possible moves." + }, + "expected": [ + { + "move": "Rab1", + "fen": "Kbnn1kb1/PP1q4/q4q2/2q4q/4q3/1q4q1/3q4/1r5r w - - 1 2" + }, + { + "move": "Rac1", + "fen": "Kbnn1kb1/PP1q4/q4q2/2q4q/4q3/1q4q1/3q4/2r4r w - - 1 2" + }, + { + "move": "Rad1", + "fen": "Kbnn1kb1/PP1q4/q4q2/2q4q/4q3/1q4q1/3q4/3r3r w - - 1 2" + }, + { + "move": "Rae1", + "fen": "Kbnn1kb1/PP1q4/q4q2/2q4q/4q3/1q4q1/3q4/4r2r w - - 1 2" + }, + { + "move": "Raf1", + "fen": "Kbnn1kb1/PP1q4/q4q2/2q4q/4q3/1q4q1/3q4/5r1r w - - 1 2" + }, + { + "move": "Rag1", + "fen": "Kbnn1kb1/PP1q4/q4q2/2q4q/4q3/1q4q1/3q4/6rr w - - 1 2" + }, + { + "move": "Ra2", + "fen": "Kbnn1kb1/PP1q4/q4q2/2q4q/4q3/1q4q1/r2q4/7r w - - 1 2" + }, + { + "move": "Ra3", + "fen": "Kbnn1kb1/PP1q4/q4q2/2q4q/4q3/rq4q1/3q4/7r w - - 1 2" + }, + { + "move": "Ra4", + "fen": "Kbnn1kb1/PP1q4/q4q2/2q4q/r3q3/1q4q1/3q4/7r w - - 1 2" + }, + { + "move": "Ra5", + "fen": "Kbnn1kb1/PP1q4/q4q2/r1q4q/4q3/1q4q1/3q4/7r w - - 1 2" + }, + { + "move": "Rhg1", + "fen": "Kbnn1kb1/PP1q4/q4q2/2q4q/4q3/1q4q1/3q4/r5r1 w - - 1 2" + }, + { + "move": "Rhf1", + "fen": "Kbnn1kb1/PP1q4/q4q2/2q4q/4q3/1q4q1/3q4/r4r2 w - - 1 2" + }, + { + "move": "Rhe1", + "fen": "Kbnn1kb1/PP1q4/q4q2/2q4q/4q3/1q4q1/3q4/r3r3 w - - 1 2" + }, + { + "move": "Rhd1", + "fen": "Kbnn1kb1/PP1q4/q4q2/2q4q/4q3/1q4q1/3q4/r2r4 w - - 1 2" + }, + { + "move": "Rhc1", + "fen": "Kbnn1kb1/PP1q4/q4q2/2q4q/4q3/1q4q1/3q4/r1r5 w - - 1 2" + }, + { + "move": "Rhb1", + "fen": "Kbnn1kb1/PP1q4/q4q2/2q4q/4q3/1q4q1/3q4/rr6 w - - 1 2" + }, + { + "move": "Rh2", + "fen": "Kbnn1kb1/PP1q4/q4q2/2q4q/4q3/1q4q1/3q3r/r7 w - - 1 2" + }, + { + "move": "Rh3", + "fen": "Kbnn1kb1/PP1q4/q4q2/2q4q/4q3/1q4qr/3q4/r7 w - - 1 2" + }, + { + "move": "Rh4", + "fen": "Kbnn1kb1/PP1q4/q4q2/2q4q/4q2r/1q4q1/3q4/r7 w - - 1 2" + }, + { + "move": "Qdc1", + "fen": "Kbnn1kb1/PP1q4/q4q2/2q4q/4q3/1q4q1/8/r1q4r w - - 1 2" + }, + { + "move": "Qdd1", + "fen": "Kbnn1kb1/PP1q4/q4q2/2q4q/4q3/1q4q1/8/r2q3r w - - 1 2" + }, + { + "move": "Qde1", + "fen": "Kbnn1kb1/PP1q4/q4q2/2q4q/4q3/1q4q1/8/r3q2r w - - 1 2" + }, + { + "move": "Qdc2", + "fen": "Kbnn1kb1/PP1q4/q4q2/2q4q/4q3/1q4q1/2q5/r6r w - - 1 2" + }, + { + "move": "Qdb2", + "fen": "Kbnn1kb1/PP1q4/q4q2/2q4q/4q3/1q4q1/1q6/r6r w - - 1 2" + }, + { + "move": "Qda2", + "fen": "Kbnn1kb1/PP1q4/q4q2/2q4q/4q3/1q4q1/q7/r6r w - - 1 2" + }, + { + "move": "Qde2", + "fen": "Kbnn1kb1/PP1q4/q4q2/2q4q/4q3/1q4q1/4q3/r6r w - - 1 2" + }, + { + "move": "Qdf2", + "fen": "Kbnn1kb1/PP1q4/q4q2/2q4q/4q3/1q4q1/5q2/r6r w - - 1 2" + }, + { + "move": "Qdg2", + "fen": "Kbnn1kb1/PP1q4/q4q2/2q4q/4q3/1q4q1/6q1/r6r w - - 1 2" + }, + { + "move": "Qdh2", + "fen": "Kbnn1kb1/PP1q4/q4q2/2q4q/4q3/1q4q1/7q/r6r w - - 1 2" + }, + { + "move": "Qdc3", + "fen": "Kbnn1kb1/PP1q4/q4q2/2q4q/4q3/1qq3q1/8/r6r w - - 1 2" + }, + { + "move": "Qdb4", + "fen": "Kbnn1kb1/PP1q4/q4q2/2q4q/1q2q3/1q4q1/8/r6r w - - 1 2" + }, + { + "move": "Qda5", + "fen": "Kbnn1kb1/PP1q4/q4q2/q1q4q/4q3/1q4q1/8/r6r w - - 1 2" + }, + { + "move": "Q2d3", + "fen": "Kbnn1kb1/PP1q4/q4q2/2q4q/4q3/1q1q2q1/8/r6r w - - 1 2" + }, + { + "move": "Q2d4", + "fen": "Kbnn1kb1/PP1q4/q4q2/2q4q/3qq3/1q4q1/8/r6r w - - 1 2" + }, + { + "move": "Q2d5", + "fen": "Kbnn1kb1/PP1q4/q4q2/2qq3q/4q3/1q4q1/8/r6r w - - 1 2" + }, + { + "move": "Q2d6", + "fen": "Kbnn1kb1/PP1q4/q2q1q2/2q4q/4q3/1q4q1/8/r6r w - - 1 2" + }, + { + "move": "Qde3", + "fen": "Kbnn1kb1/PP1q4/q4q2/2q4q/4q3/1q2q1q1/8/r6r w - - 1 2" + }, + { + "move": "Qdf4", + "fen": "Kbnn1kb1/PP1q4/q4q2/2q4q/4qq2/1q4q1/8/r6r w - - 1 2" + }, + { + "move": "Qdg5", + "fen": "Kbnn1kb1/PP1q4/q4q2/2q3qq/4q3/1q4q1/8/r6r w - - 1 2" + }, + { + "move": "Qdh6", + "fen": "Kbnn1kb1/PP1q4/q4q1q/2q4q/4q3/1q4q1/8/r6r w - - 1 2" + }, + { + "move": "Qba2", + "fen": "Kbnn1kb1/PP1q4/q4q2/2q4q/4q3/6q1/q2q4/r6r w - - 1 2" + }, + { + "move": "Qbb2", + "fen": "Kbnn1kb1/PP1q4/q4q2/2q4q/4q3/6q1/1q1q4/r6r w - - 1 2" + }, + { + "move": "Qbb1", + "fen": "Kbnn1kb1/PP1q4/q4q2/2q4q/4q3/6q1/3q4/rq5r w - - 1 2" + }, + { + "move": "Qbc2", + "fen": "Kbnn1kb1/PP1q4/q4q2/2q4q/4q3/6q1/2qq4/r6r w - - 1 2" + }, + { + "move": "Qbd1", + "fen": "Kbnn1kb1/PP1q4/q4q2/2q4q/4q3/6q1/3q4/r2q3r w - - 1 2" + }, + { + "move": "Qba3", + "fen": "Kbnn1kb1/PP1q4/q4q2/2q4q/4q3/q5q1/3q4/r6r w - - 1 2" + }, + { + "move": "Qbc3", + "fen": "Kbnn1kb1/PP1q4/q4q2/2q4q/4q3/2q3q1/3q4/r6r w - - 1 2" + }, + { + "move": "Qbd3", + "fen": "Kbnn1kb1/PP1q4/q4q2/2q4q/4q3/3q2q1/3q4/r6r w - - 1 2" + }, + { + "move": "Qbe3", + "fen": "Kbnn1kb1/PP1q4/q4q2/2q4q/4q3/4q1q1/3q4/r6r w - - 1 2" + }, + { + "move": "Qbf3", + "fen": "Kbnn1kb1/PP1q4/q4q2/2q4q/4q3/5qq1/3q4/r6r w - - 1 2" + }, + { + "move": "Qba4", + "fen": "Kbnn1kb1/PP1q4/q4q2/2q4q/q3q3/6q1/3q4/r6r w - - 1 2" + }, + { + "move": "Qbb4", + "fen": "Kbnn1kb1/PP1q4/q4q2/2q4q/1q2q3/6q1/3q4/r6r w - - 1 2" + }, + { + "move": "Qbb5", + "fen": "Kbnn1kb1/PP1q4/q4q2/1qq4q/4q3/6q1/3q4/r6r w - - 1 2" + }, + { + "move": "Qbb6", + "fen": "Kbnn1kb1/PP1q4/qq3q2/2q4q/4q3/6q1/3q4/r6r w - - 1 2" + }, + { + "move": "Qbxb7#", + "fen": "Kbnn1kb1/Pq1q4/q4q2/2q4q/4q3/6q1/3q4/r6r w - - 0 2" + }, + { + "move": "Qbc4", + "fen": "Kbnn1kb1/PP1q4/q4q2/2q4q/2q1q3/6q1/3q4/r6r w - - 1 2" + }, + { + "move": "Qbd5", + "fen": "Kbnn1kb1/PP1q4/q4q2/2qq3q/4q3/6q1/3q4/r6r w - - 1 2" + }, + { + "move": "Qbe6", + "fen": "Kbnn1kb1/PP1q4/q3qq2/2q4q/4q3/6q1/3q4/r6r w - - 1 2" + }, + { + "move": "Qbf7", + "fen": "Kbnn1kb1/PP1q1q2/q4q2/2q4q/4q3/6q1/3q4/r6r w - - 1 2" + }, + { + "move": "Qgf2", + "fen": "Kbnn1kb1/PP1q4/q4q2/2q4q/4q3/1q6/3q1q2/r6r w - - 1 2" + }, + { + "move": "Qge1", + "fen": "Kbnn1kb1/PP1q4/q4q2/2q4q/4q3/1q6/3q4/r3q2r w - - 1 2" + }, + { + "move": "Qgg2", + "fen": "Kbnn1kb1/PP1q4/q4q2/2q4q/4q3/1q6/3q2q1/r6r w - - 1 2" + }, + { + "move": "Qgg1", + "fen": "Kbnn1kb1/PP1q4/q4q2/2q4q/4q3/1q6/3q4/r5qr w - - 1 2" + }, + { + "move": "Qgh2", + "fen": "Kbnn1kb1/PP1q4/q4q2/2q4q/4q3/1q6/3q3q/r6r w - - 1 2" + }, + { + "move": "Qgf3", + "fen": "Kbnn1kb1/PP1q4/q4q2/2q4q/4q3/1q3q2/3q4/r6r w - - 1 2" + }, + { + "move": "Qge3", + "fen": "Kbnn1kb1/PP1q4/q4q2/2q4q/4q3/1q2q3/3q4/r6r w - - 1 2" + }, + { + "move": "Qgd3", + "fen": "Kbnn1kb1/PP1q4/q4q2/2q4q/4q3/1q1q4/3q4/r6r w - - 1 2" + }, + { + "move": "Qgc3", + "fen": "Kbnn1kb1/PP1q4/q4q2/2q4q/4q3/1qq5/3q4/r6r w - - 1 2" + }, + { + "move": "Qgh3", + "fen": "Kbnn1kb1/PP1q4/q4q2/2q4q/4q3/1q5q/3q4/r6r w - - 1 2" + }, + { + "move": "Qgf4", + "fen": "Kbnn1kb1/PP1q4/q4q2/2q4q/4qq2/1q6/3q4/r6r w - - 1 2" + }, + { + "move": "Qge5", + "fen": "Kbnn1kb1/PP1q4/q4q2/2q1q2q/4q3/1q6/3q4/r6r w - - 1 2" + }, + { + "move": "Qgd6", + "fen": "Kbnn1kb1/PP1q4/q2q1q2/2q4q/4q3/1q6/3q4/r6r w - - 1 2" + }, + { + "move": "Qgc7", + "fen": "Kbnn1kb1/PPqq4/q4q2/2q4q/4q3/1q6/3q4/r6r w - - 1 2" + }, + { + "move": "Qgg4", + "fen": "Kbnn1kb1/PP1q4/q4q2/2q4q/4q1q1/1q6/3q4/r6r w - - 1 2" + }, + { + "move": "Qgg5", + "fen": "Kbnn1kb1/PP1q4/q4q2/2q3qq/4q3/1q6/3q4/r6r w - - 1 2" + }, + { + "move": "Qgg6", + "fen": "Kbnn1kb1/PP1q4/q4qq1/2q4q/4q3/1q6/3q4/r6r w - - 1 2" + }, + { + "move": "Qgg7", + "fen": "Kbnn1kb1/PP1q2q1/q4q2/2q4q/4q3/1q6/3q4/r6r w - - 1 2" + }, + { + "move": "Qgh4", + "fen": "Kbnn1kb1/PP1q4/q4q2/2q4q/4q2q/1q6/3q4/r6r w - - 1 2" + }, + { + "move": "Qed3", + "fen": "Kbnn1kb1/PP1q4/q4q2/2q4q/8/1q1q2q1/3q4/r6r w - - 1 2" + }, + { + "move": "Qec2", + "fen": "Kbnn1kb1/PP1q4/q4q2/2q4q/8/1q4q1/2qq4/r6r w - - 1 2" + }, + { + "move": "Qeb1", + "fen": "Kbnn1kb1/PP1q4/q4q2/2q4q/8/1q4q1/3q4/rq5r w - - 1 2" + }, + { + "move": "Qee3", + "fen": "Kbnn1kb1/PP1q4/q4q2/2q4q/8/1q2q1q1/3q4/r6r w - - 1 2" + }, + { + "move": "Qee2", + "fen": "Kbnn1kb1/PP1q4/q4q2/2q4q/8/1q4q1/3qq3/r6r w - - 1 2" + }, + { + "move": "Qee1", + "fen": "Kbnn1kb1/PP1q4/q4q2/2q4q/8/1q4q1/3q4/r3q2r w - - 1 2" + }, + { + "move": "Qef3", + "fen": "Kbnn1kb1/PP1q4/q4q2/2q4q/8/1q3qq1/3q4/r6r w - - 1 2" + }, + { + "move": "Qeg2", + "fen": "Kbnn1kb1/PP1q4/q4q2/2q4q/8/1q4q1/3q2q1/r6r w - - 1 2" + }, + { + "move": "Qed4", + "fen": "Kbnn1kb1/PP1q4/q4q2/2q4q/3q4/1q4q1/3q4/r6r w - - 1 2" + }, + { + "move": "Qec4", + "fen": "Kbnn1kb1/PP1q4/q4q2/2q4q/2q5/1q4q1/3q4/r6r w - - 1 2" + }, + { + "move": "Qeb4", + "fen": "Kbnn1kb1/PP1q4/q4q2/2q4q/1q6/1q4q1/3q4/r6r w - - 1 2" + }, + { + "move": "Qea4", + "fen": "Kbnn1kb1/PP1q4/q4q2/2q4q/q7/1q4q1/3q4/r6r w - - 1 2" + }, + { + "move": "Qef4", + "fen": "Kbnn1kb1/PP1q4/q4q2/2q4q/5q2/1q4q1/3q4/r6r w - - 1 2" + }, + { + "move": "Qeg4", + "fen": "Kbnn1kb1/PP1q4/q4q2/2q4q/6q1/1q4q1/3q4/r6r w - - 1 2" + }, + { + "move": "Qeh4", + "fen": "Kbnn1kb1/PP1q4/q4q2/2q4q/7q/1q4q1/3q4/r6r w - - 1 2" + }, + { + "move": "Qed5", + "fen": "Kbnn1kb1/PP1q4/q4q2/2qq3q/8/1q4q1/3q4/r6r w - - 1 2" + }, + { + "move": "Qec6", + "fen": "Kbnn1kb1/PP1q4/q1q2q2/2q4q/8/1q4q1/3q4/r6r w - - 1 2" + }, + { + "move": "Qexb7#", + "fen": "Kbnn1kb1/Pq1q4/q4q2/2q4q/8/1q4q1/3q4/r6r w - - 0 2" + }, + { + "move": "Qee5", + "fen": "Kbnn1kb1/PP1q4/q4q2/2q1q2q/8/1q4q1/3q4/r6r w - - 1 2" + }, + { + "move": "Qee6", + "fen": "Kbnn1kb1/PP1q4/q3qq2/2q4q/8/1q4q1/3q4/r6r w - - 1 2" + }, + { + "move": "Qee7", + "fen": "Kbnn1kb1/PP1qq3/q4q2/2q4q/8/1q4q1/3q4/r6r w - - 1 2" + }, + { + "move": "Qee8", + "fen": "Kbnnqkb1/PP1q4/q4q2/2q4q/8/1q4q1/3q4/r6r w - - 1 2" + }, + { + "move": "Qef5", + "fen": "Kbnn1kb1/PP1q4/q4q2/2q2q1q/8/1q4q1/3q4/r6r w - - 1 2" + }, + { + "move": "Qeg6", + "fen": "Kbnn1kb1/PP1q4/q4qq1/2q4q/8/1q4q1/3q4/r6r w - - 1 2" + }, + { + "move": "Qeh7", + "fen": "Kbnn1kb1/PP1q3q/q4q2/2q4q/8/1q4q1/3q4/r6r w - - 1 2" + }, + { + "move": "Qcb4", + "fen": "Kbnn1kb1/PP1q4/q4q2/7q/1q2q3/1q4q1/3q4/r6r w - - 1 2" + }, + { + "move": "Qca3", + "fen": "Kbnn1kb1/PP1q4/q4q2/7q/4q3/qq4q1/3q4/r6r w - - 1 2" + }, + { + "move": "Qcc4", + "fen": "Kbnn1kb1/PP1q4/q4q2/7q/2q1q3/1q4q1/3q4/r6r w - - 1 2" + }, + { + "move": "Qcc3", + "fen": "Kbnn1kb1/PP1q4/q4q2/7q/4q3/1qq3q1/3q4/r6r w - - 1 2" + }, + { + "move": "Qcc2", + "fen": "Kbnn1kb1/PP1q4/q4q2/7q/4q3/1q4q1/2qq4/r6r w - - 1 2" + }, + { + "move": "Qcc1", + "fen": "Kbnn1kb1/PP1q4/q4q2/7q/4q3/1q4q1/3q4/r1q4r w - - 1 2" + }, + { + "move": "Qcd4", + "fen": "Kbnn1kb1/PP1q4/q4q2/7q/3qq3/1q4q1/3q4/r6r w - - 1 2" + }, + { + "move": "Qce3", + "fen": "Kbnn1kb1/PP1q4/q4q2/7q/4q3/1q2q1q1/3q4/r6r w - - 1 2" + }, + { + "move": "Qcf2", + "fen": "Kbnn1kb1/PP1q4/q4q2/7q/4q3/1q4q1/3q1q2/r6r w - - 1 2" + }, + { + "move": "Qcg1", + "fen": "Kbnn1kb1/PP1q4/q4q2/7q/4q3/1q4q1/3q4/r5qr w - - 1 2" + }, + { + "move": "Qcb5", + "fen": "Kbnn1kb1/PP1q4/q4q2/1q5q/4q3/1q4q1/3q4/r6r w - - 1 2" + }, + { + "move": "Qca5", + "fen": "Kbnn1kb1/PP1q4/q4q2/q6q/4q3/1q4q1/3q4/r6r w - - 1 2" + }, + { + "move": "Qcd5", + "fen": "Kbnn1kb1/PP1q4/q4q2/3q3q/4q3/1q4q1/3q4/r6r w - - 1 2" + }, + { + "move": "Qce5", + "fen": "Kbnn1kb1/PP1q4/q4q2/4q2q/4q3/1q4q1/3q4/r6r w - - 1 2" + }, + { + "move": "Qcf5", + "fen": "Kbnn1kb1/PP1q4/q4q2/5q1q/4q3/1q4q1/3q4/r6r w - - 1 2" + }, + { + "move": "Qcg5", + "fen": "Kbnn1kb1/PP1q4/q4q2/6qq/4q3/1q4q1/3q4/r6r w - - 1 2" + }, + { + "move": "Qcb6", + "fen": "Kbnn1kb1/PP1q4/qq3q2/7q/4q3/1q4q1/3q4/r6r w - - 1 2" + }, + { + "move": "Qcxa7#", + "fen": "Kbnn1kb1/qP1q4/q4q2/7q/4q3/1q4q1/3q4/r6r w - - 0 2" + }, + { + "move": "Qcc6", + "fen": "Kbnn1kb1/PP1q4/q1q2q2/7q/4q3/1q4q1/3q4/r6r w - - 1 2" + }, + { + "move": "Qcc7", + "fen": "Kbnn1kb1/PPqq4/q4q2/7q/4q3/1q4q1/3q4/r6r w - - 1 2" + }, + { + "move": "Qcd6", + "fen": "Kbnn1kb1/PP1q4/q2q1q2/7q/4q3/1q4q1/3q4/r6r w - - 1 2" + }, + { + "move": "Qce7", + "fen": "Kbnn1kb1/PP1qq3/q4q2/7q/4q3/1q4q1/3q4/r6r w - - 1 2" + }, + { + "move": "Qhg4", + "fen": "Kbnn1kb1/PP1q4/q4q2/2q5/4q1q1/1q4q1/3q4/r6r w - - 1 2" + }, + { + "move": "Qhf3", + "fen": "Kbnn1kb1/PP1q4/q4q2/2q5/4q3/1q3qq1/3q4/r6r w - - 1 2" + }, + { + "move": "Qhe2", + "fen": "Kbnn1kb1/PP1q4/q4q2/2q5/4q3/1q4q1/3qq3/r6r w - - 1 2" + }, + { + "move": "Qhd1", + "fen": "Kbnn1kb1/PP1q4/q4q2/2q5/4q3/1q4q1/3q4/r2q3r w - - 1 2" + }, + { + "move": "Qhh4", + "fen": "Kbnn1kb1/PP1q4/q4q2/2q5/4q2q/1q4q1/3q4/r6r w - - 1 2" + }, + { + "move": "Qhh3", + "fen": "Kbnn1kb1/PP1q4/q4q2/2q5/4q3/1q4qq/3q4/r6r w - - 1 2" + }, + { + "move": "Qhh2", + "fen": "Kbnn1kb1/PP1q4/q4q2/2q5/4q3/1q4q1/3q3q/r6r w - - 1 2" + }, + { + "move": "Qhg5", + "fen": "Kbnn1kb1/PP1q4/q4q2/2q3q1/4q3/1q4q1/3q4/r6r w - - 1 2" + }, + { + "move": "Qhf5", + "fen": "Kbnn1kb1/PP1q4/q4q2/2q2q2/4q3/1q4q1/3q4/r6r w - - 1 2" + }, + { + "move": "Qhe5", + "fen": "Kbnn1kb1/PP1q4/q4q2/2q1q3/4q3/1q4q1/3q4/r6r w - - 1 2" + }, + { + "move": "Qhd5", + "fen": "Kbnn1kb1/PP1q4/q4q2/2qq4/4q3/1q4q1/3q4/r6r w - - 1 2" + }, + { + "move": "Qhg6", + "fen": "Kbnn1kb1/PP1q4/q4qq1/2q5/4q3/1q4q1/3q4/r6r w - - 1 2" + }, + { + "move": "Qhf7", + "fen": "Kbnn1kb1/PP1q1q2/q4q2/2q5/4q3/1q4q1/3q4/r6r w - - 1 2" + }, + { + "move": "Qhe8", + "fen": "Kbnnqkb1/PP1q4/q4q2/2q5/4q3/1q4q1/3q4/r6r w - - 1 2" + }, + { + "move": "Qhh6", + "fen": "Kbnn1kb1/PP1q4/q4q1q/2q5/4q3/1q4q1/3q4/r6r w - - 1 2" + }, + { + "move": "Qhh7", + "fen": "Kbnn1kb1/PP1q3q/q4q2/2q5/4q3/1q4q1/3q4/r6r w - - 1 2" + }, + { + "move": "Qhh8", + "fen": "Kbnn1kbq/PP1q4/q4q2/2q5/4q3/1q4q1/3q4/r6r w - - 1 2" + }, + { + "move": "Qaa5", + "fen": "Kbnn1kb1/PP1q4/5q2/q1q4q/4q3/1q4q1/3q4/r6r w - - 1 2" + }, + { + "move": "Qaa4", + "fen": "Kbnn1kb1/PP1q4/5q2/2q4q/q3q3/1q4q1/3q4/r6r w - - 1 2" + }, + { + "move": "Qaa3", + "fen": "Kbnn1kb1/PP1q4/5q2/2q4q/4q3/qq4q1/3q4/r6r w - - 1 2" + }, + { + "move": "Qaa2", + "fen": "Kbnn1kb1/PP1q4/5q2/2q4q/4q3/1q4q1/q2q4/r6r w - - 1 2" + }, + { + "move": "Qab5", + "fen": "Kbnn1kb1/PP1q4/5q2/1qq4q/4q3/1q4q1/3q4/r6r w - - 1 2" + }, + { + "move": "Qac4", + "fen": "Kbnn1kb1/PP1q4/5q2/2q4q/2q1q3/1q4q1/3q4/r6r w - - 1 2" + }, + { + "move": "Qad3", + "fen": "Kbnn1kb1/PP1q4/5q2/2q4q/4q3/1q1q2q1/3q4/r6r w - - 1 2" + }, + { + "move": "Qae2", + "fen": "Kbnn1kb1/PP1q4/5q2/2q4q/4q3/1q4q1/3qq3/r6r w - - 1 2" + }, + { + "move": "Qaf1", + "fen": "Kbnn1kb1/PP1q4/5q2/2q4q/4q3/1q4q1/3q4/r4q1r w - - 1 2" + }, + { + "move": "Qab6", + "fen": "Kbnn1kb1/PP1q4/1q3q2/2q4q/4q3/1q4q1/3q4/r6r w - - 1 2" + }, + { + "move": "Qac6", + "fen": "Kbnn1kb1/PP1q4/2q2q2/2q4q/4q3/1q4q1/3q4/r6r w - - 1 2" + }, + { + "move": "Qad6", + "fen": "Kbnn1kb1/PP1q4/3q1q2/2q4q/4q3/1q4q1/3q4/r6r w - - 1 2" + }, + { + "move": "Qae6", + "fen": "Kbnn1kb1/PP1q4/4qq2/2q4q/4q3/1q4q1/3q4/r6r w - - 1 2" + }, + { + "move": "Qaxa7#", + "fen": "Kbnn1kb1/qP1q4/5q2/2q4q/4q3/1q4q1/3q4/r6r w - - 0 2" + }, + { + "move": "Qaxb7#", + "fen": "Kbnn1kb1/Pq1q4/5q2/2q4q/4q3/1q4q1/3q4/r6r w - - 0 2" + }, + { + "move": "Qfe5", + "fen": "Kbnn1kb1/PP1q4/q7/2q1q2q/4q3/1q4q1/3q4/r6r w - - 1 2" + }, + { + "move": "Qfd4", + "fen": "Kbnn1kb1/PP1q4/q7/2q4q/3qq3/1q4q1/3q4/r6r w - - 1 2" + }, + { + "move": "Qfc3", + "fen": "Kbnn1kb1/PP1q4/q7/2q4q/4q3/1qq3q1/3q4/r6r w - - 1 2" + }, + { + "move": "Qfb2", + "fen": "Kbnn1kb1/PP1q4/q7/2q4q/4q3/1q4q1/1q1q4/r6r w - - 1 2" + }, + { + "move": "Qff5", + "fen": "Kbnn1kb1/PP1q4/q7/2q2q1q/4q3/1q4q1/3q4/r6r w - - 1 2" + }, + { + "move": "Qff4", + "fen": "Kbnn1kb1/PP1q4/q7/2q4q/4qq2/1q4q1/3q4/r6r w - - 1 2" + }, + { + "move": "Qff3", + "fen": "Kbnn1kb1/PP1q4/q7/2q4q/4q3/1q3qq1/3q4/r6r w - - 1 2" + }, + { + "move": "Qff2", + "fen": "Kbnn1kb1/PP1q4/q7/2q4q/4q3/1q4q1/3q1q2/r6r w - - 1 2" + }, + { + "move": "Qff1", + "fen": "Kbnn1kb1/PP1q4/q7/2q4q/4q3/1q4q1/3q4/r4q1r w - - 1 2" + }, + { + "move": "Qfg5", + "fen": "Kbnn1kb1/PP1q4/q7/2q3qq/4q3/1q4q1/3q4/r6r w - - 1 2" + }, + { + "move": "Qfh4", + "fen": "Kbnn1kb1/PP1q4/q7/2q4q/4q2q/1q4q1/3q4/r6r w - - 1 2" + }, + { + "move": "Qfe6", + "fen": "Kbnn1kb1/PP1q4/q3q3/2q4q/4q3/1q4q1/3q4/r6r w - - 1 2" + }, + { + "move": "Qfd6", + "fen": "Kbnn1kb1/PP1q4/q2q4/2q4q/4q3/1q4q1/3q4/r6r w - - 1 2" + }, + { + "move": "Qfc6", + "fen": "Kbnn1kb1/PP1q4/q1q5/2q4q/4q3/1q4q1/3q4/r6r w - - 1 2" + }, + { + "move": "Qfb6", + "fen": "Kbnn1kb1/PP1q4/qq6/2q4q/4q3/1q4q1/3q4/r6r w - - 1 2" + }, + { + "move": "Qfg6", + "fen": "Kbnn1kb1/PP1q4/q5q1/2q4q/4q3/1q4q1/3q4/r6r w - - 1 2" + }, + { + "move": "Qfh6", + "fen": "Kbnn1kb1/PP1q4/q6q/2q4q/4q3/1q4q1/3q4/r6r w - - 1 2" + }, + { + "move": "Qfe7", + "fen": "Kbnn1kb1/PP1qq3/q7/2q4q/4q3/1q4q1/3q4/r6r w - - 1 2" + }, + { + "move": "Qff7", + "fen": "Kbnn1kb1/PP1q1q2/q7/2q4q/4q3/1q4q1/3q4/r6r w - - 1 2" + }, + { + "move": "Qfg7", + "fen": "Kbnn1kb1/PP1q2q1/q7/2q4q/4q3/1q4q1/3q4/r6r w - - 1 2" + }, + { + "move": "Qfh8", + "fen": "Kbnn1kbq/PP1q4/q7/2q4q/4q3/1q4q1/3q4/r6r w - - 1 2" + }, + { + "move": "Qdc6", + "fen": "Kbnn1kb1/PP6/q1q2q2/2q4q/4q3/1q4q1/3q4/r6r w - - 1 2" + }, + { + "move": "Qdb5", + "fen": "Kbnn1kb1/PP6/q4q2/1qq4q/4q3/1q4q1/3q4/r6r w - - 1 2" + }, + { + "move": "Qda4", + "fen": "Kbnn1kb1/PP6/q4q2/2q4q/q3q3/1q4q1/3q4/r6r w - - 1 2" + }, + { + "move": "Q7d6", + "fen": "Kbnn1kb1/PP6/q2q1q2/2q4q/4q3/1q4q1/3q4/r6r w - - 1 2" + }, + { + "move": "Q7d5", + "fen": "Kbnn1kb1/PP6/q4q2/2qq3q/4q3/1q4q1/3q4/r6r w - - 1 2" + }, + { + "move": "Q7d4", + "fen": "Kbnn1kb1/PP6/q4q2/2q4q/3qq3/1q4q1/3q4/r6r w - - 1 2" + }, + { + "move": "Q7d3", + "fen": "Kbnn1kb1/PP6/q4q2/2q4q/4q3/1q1q2q1/3q4/r6r w - - 1 2" + }, + { + "move": "Qde6", + "fen": "Kbnn1kb1/PP6/q3qq2/2q4q/4q3/1q4q1/3q4/r6r w - - 1 2" + }, + { + "move": "Qdf5", + "fen": "Kbnn1kb1/PP6/q4q2/2q2q1q/4q3/1q4q1/3q4/r6r w - - 1 2" + }, + { + "move": "Qdg4", + "fen": "Kbnn1kb1/PP6/q4q2/2q4q/4q1q1/1q4q1/3q4/r6r w - - 1 2" + }, + { + "move": "Qdh3", + "fen": "Kbnn1kb1/PP6/q4q2/2q4q/4q3/1q4qq/3q4/r6r w - - 1 2" + }, + { + "move": "Qdc7", + "fen": "Kbnn1kb1/PPq5/q4q2/2q4q/4q3/1q4q1/3q4/r6r w - - 1 2" + }, + { + "move": "Qdxb7#", + "fen": "Kbnn1kb1/Pq6/q4q2/2q4q/4q3/1q4q1/3q4/r6r w - - 0 2" + }, + { + "move": "Qde7", + "fen": "Kbnn1kb1/PP2q3/q4q2/2q4q/4q3/1q4q1/3q4/r6r w - - 1 2" + }, + { + "move": "Qdf7", + "fen": "Kbnn1kb1/PP3q2/q4q2/2q4q/4q3/1q4q1/3q4/r6r w - - 1 2" + }, + { + "move": "Qdg7", + "fen": "Kbnn1kb1/PP4q1/q4q2/2q4q/4q3/1q4q1/3q4/r6r w - - 1 2" + }, + { + "move": "Qdh7", + "fen": "Kbnn1kb1/PP5q/q4q2/2q4q/4q3/1q4q1/3q4/r6r w - - 1 2" + }, + { + "move": "Qde8", + "fen": "Kbnnqkb1/PP6/q4q2/2q4q/4q3/1q4q1/3q4/r6r w - - 1 2" + }, + { + "move": "Bxa7", + "fen": "K1nn1kb1/bP1q4/q4q2/2q4q/4q3/1q4q1/3q4/r6r w - - 0 2" + }, + { + "move": "Bc7", + "fen": "K1nn1kb1/PPbq4/q4q2/2q4q/4q3/1q4q1/3q4/r6r w - - 1 2" + }, + { + "move": "Bd6", + "fen": "K1nn1kb1/PP1q4/q2b1q2/2q4q/4q3/1q4q1/3q4/r6r w - - 1 2" + }, + { + "move": "Be5", + "fen": "K1nn1kb1/PP1q4/q4q2/2q1b2q/4q3/1q4q1/3q4/r6r w - - 1 2" + }, + { + "move": "Bf4", + "fen": "K1nn1kb1/PP1q4/q4q2/2q4q/4qb2/1q4q1/3q4/r6r w - - 1 2" + }, + { + "move": "Nb6#", + "fen": "Kb1n1kb1/PP1q4/qn3q2/2q4q/4q3/1q4q1/3q4/r6r w - - 1 2" + }, + { + "move": "Nd6", + "fen": "Kb1n1kb1/PP1q4/q2n1q2/2q4q/4q3/1q4q1/3q4/r6r w - - 1 2" + }, + { + "move": "Nxa7", + "fen": "Kb1n1kb1/nP1q4/q4q2/2q4q/4q3/1q4q1/3q4/r6r w - - 0 2" + }, + { + "move": "Ne7", + "fen": "Kb1n1kb1/PP1qn3/q4q2/2q4q/4q3/1q4q1/3q4/r6r w - - 1 2" + }, + { + "move": "Nc6", + "fen": "Kbn2kb1/PP1q4/q1n2q2/2q4q/4q3/1q4q1/3q4/r6r w - - 1 2" + }, + { + "move": "Ne6", + "fen": "Kbn2kb1/PP1q4/q3nq2/2q4q/4q3/1q4q1/3q4/r6r w - - 1 2" + }, + { + "move": "Nxb7", + "fen": "Kbn2kb1/Pn1q4/q4q2/2q4q/4q3/1q4q1/3q4/r6r w - - 0 2" + }, + { + "move": "Nf7", + "fen": "Kbn2kb1/PP1q1n2/q4q2/2q4q/4q3/1q4q1/3q4/r6r w - - 1 2" + }, + { + "move": "Ke7", + "fen": "Kbnn2b1/PP1qk3/q4q2/2q4q/4q3/1q4q1/3q4/r6r w - - 1 2" + }, + { + "move": "Kf7", + "fen": "Kbnn2b1/PP1q1k2/q4q2/2q4q/4q3/1q4q1/3q4/r6r w - - 1 2" + }, + { + "move": "Kg7", + "fen": "Kbnn2b1/PP1q2k1/q4q2/2q4q/4q3/1q4q1/3q4/r6r w - - 1 2" + }, + { + "move": "Ke8", + "fen": "Kbnnk1b1/PP1q4/q4q2/2q4q/4q3/1q4q1/3q4/r6r w - - 1 2" + }, + { + "move": "Bf7", + "fen": "Kbnn1k2/PP1q1b2/q4q2/2q4q/4q3/1q4q1/3q4/r6r w - - 1 2" + }, + { + "move": "Be6", + "fen": "Kbnn1k2/PP1q4/q3bq2/2q4q/4q3/1q4q1/3q4/r6r w - - 1 2" + }, + { + "move": "Bd5", + "fen": "Kbnn1k2/PP1q4/q4q2/2qb3q/4q3/1q4q1/3q4/r6r w - - 1 2" + }, + { + "move": "Bc4", + "fen": "Kbnn1k2/PP1q4/q4q2/2q4q/2b1q3/1q4q1/3q4/r6r w - - 1 2" + }, + { + "move": "Bh7", + "fen": "Kbnn1k2/PP1q3b/q4q2/2q4q/4q3/1q4q1/3q4/r6r w - - 1 2" + } + ] + }, + { + "start": { + "fen": "B2k4/1B6/2B5/3B4/4B3/1B3B2/5KB1/6BB w - - 0 1", + "description": "The maximum number of bishops, mostly white." + }, + "expected": [ + { + "move": "Bh2", + "fen": "B2k4/1B6/2B5/3B4/4B3/1B3B2/5KBB/7B b - - 1 1" + }, + { + "move": "Ke1", + "fen": "B2k4/1B6/2B5/3B4/4B3/1B3B2/6B1/4K1BB b - - 1 1" + }, + { + "move": "Kf1", + "fen": "B2k4/1B6/2B5/3B4/4B3/1B3B2/6B1/5KBB b - - 1 1" + }, + { + "move": "Ke2", + "fen": "B2k4/1B6/2B5/3B4/4B3/1B3B2/4K1B1/6BB b - - 1 1" + }, + { + "move": "Ke3", + "fen": "B2k4/1B6/2B5/3B4/4B3/1B2KB2/6B1/6BB b - - 1 1" + }, + { + "move": "Kg3", + "fen": "B2k4/1B6/2B5/3B4/4B3/1B3BK1/6B1/6BB b - - 1 1" + }, + { + "move": "Bf1", + "fen": "B2k4/1B6/2B5/3B4/4B3/1B3B2/5K2/5BBB b - - 1 1" + }, + { + "move": "Bh3", + "fen": "B2k4/1B6/2B5/3B4/4B3/1B3B1B/5K2/6BB b - - 1 1" + }, + { + "move": "Ba2", + "fen": "B2k4/1B6/2B5/3B4/4B3/5B2/B4KB1/6BB b - - 1 1" + }, + { + "move": "Bbc2", + "fen": "B2k4/1B6/2B5/3B4/4B3/5B2/2B2KB1/6BB b - - 1 1" + }, + { + "move": "Bbd1", + "fen": "B2k4/1B6/2B5/3B4/4B3/5B2/5KB1/3B2BB b - - 1 1" + }, + { + "move": "Bba4", + "fen": "B2k4/1B6/2B5/3B4/B3B3/5B2/5KB1/6BB b - - 1 1" + }, + { + "move": "Bbc4", + "fen": "B2k4/1B6/2B5/3B4/2B1B3/5B2/5KB1/6BB b - - 1 1" + }, + { + "move": "Be2", + "fen": "B2k4/1B6/2B5/3B4/4B3/1B6/4BKB1/6BB b - - 1 1" + }, + { + "move": "Bfd1", + "fen": "B2k4/1B6/2B5/3B4/4B3/1B6/5KB1/3B2BB b - - 1 1" + }, + { + "move": "Bg4", + "fen": "B2k4/1B6/2B5/3B4/4B1B1/1B6/5KB1/6BB b - - 1 1" + }, + { + "move": "Bh5", + "fen": "B2k4/1B6/2B5/3B3B/4B3/1B6/5KB1/6BB b - - 1 1" + }, + { + "move": "Bd3", + "fen": "B2k4/1B6/2B5/3B4/8/1B1B1B2/5KB1/6BB b - - 1 1" + }, + { + "move": "Bec2", + "fen": "B2k4/1B6/2B5/3B4/8/1B3B2/2B2KB1/6BB b - - 1 1" + }, + { + "move": "Bb1", + "fen": "B2k4/1B6/2B5/3B4/8/1B3B2/5KB1/1B4BB b - - 1 1" + }, + { + "move": "Bf5", + "fen": "B2k4/1B6/2B5/3B1B2/8/1B3B2/5KB1/6BB b - - 1 1" + }, + { + "move": "Bg6", + "fen": "B2k4/1B6/2B3B1/3B4/8/1B3B2/5KB1/6BB b - - 1 1" + }, + { + "move": "Bh7", + "fen": "B2k4/1B5B/2B5/3B4/8/1B3B2/5KB1/6BB b - - 1 1" + }, + { + "move": "Bdc4", + "fen": "B2k4/1B6/2B5/8/2B1B3/1B3B2/5KB1/6BB b - - 1 1" + }, + { + "move": "Be6", + "fen": "B2k4/1B6/2B1B3/8/4B3/1B3B2/5KB1/6BB b - - 1 1" + }, + { + "move": "Bf7", + "fen": "B2k4/1B3B2/2B5/8/4B3/1B3B2/5KB1/6BB b - - 1 1" + }, + { + "move": "Bg8", + "fen": "B2k2B1/1B6/2B5/8/4B3/1B3B2/5KB1/6BB b - - 1 1" + }, + { + "move": "Bb5", + "fen": "B2k4/1B6/8/1B1B4/4B3/1B3B2/5KB1/6BB b - - 1 1" + }, + { + "move": "Bca4", + "fen": "B2k4/1B6/8/3B4/B3B3/1B3B2/5KB1/6BB b - - 1 1" + }, + { + "move": "Bd7", + "fen": "B2k4/1B1B4/8/3B4/4B3/1B3B2/5KB1/6BB b - - 1 1" + }, + { + "move": "Be8", + "fen": "B2kB3/1B6/8/3B4/4B3/1B3B2/5KB1/6BB b - - 1 1" + }, + { + "move": "Ba6", + "fen": "B2k4/8/B1B5/3B4/4B3/1B3B2/5KB1/6BB b - - 1 1" + }, + { + "move": "Bc8", + "fen": "B1Bk4/8/2B5/3B4/4B3/1B3B2/5KB1/6BB b - - 1 1" + } + ] + }, + { + "description": "Transpose of B2k4/1B6/2B5/3B4/4B3/1B3B2/5KB1/6BB w - - 0 1", + "start": { + "fen": "6bb/5kb1/1b3b2/4b3/3b4/2b5/1b6/b2K4 b - - 0 1", + "description": "The maximum number of bishops, mostly black." + }, + "expected": [ + { + "move": "Bc1", + "fen": "6bb/5kb1/1b3b2/4b3/3b4/2b5/8/b1bK4 w - - 1 2" + }, + { + "move": "Ba3", + "fen": "6bb/5kb1/1b3b2/4b3/3b4/b1b5/8/b2K4 w - - 1 2" + }, + { + "move": "Bd2", + "fen": "6bb/5kb1/1b3b2/4b3/3b4/8/1b1b4/b2K4 w - - 1 2" + }, + { + "move": "Be1", + "fen": "6bb/5kb1/1b3b2/4b3/3b4/8/1b6/b2Kb3 w - - 1 2" + }, + { + "move": "Bb4", + "fen": "6bb/5kb1/1b3b2/4b3/1b1b4/8/1b6/b2K4 w - - 1 2" + }, + { + "move": "Bca5", + "fen": "6bb/5kb1/1b3b2/b3b3/3b4/8/1b6/b2K4 w - - 1 2" + }, + { + "move": "Be3", + "fen": "6bb/5kb1/1b3b2/4b3/8/2b1b3/1b6/b2K4 w - - 1 2" + }, + { + "move": "Bf2", + "fen": "6bb/5kb1/1b3b2/4b3/8/2b5/1b3b2/b2K4 w - - 1 2" + }, + { + "move": "Bg1", + "fen": "6bb/5kb1/1b3b2/4b3/8/2b5/1b6/b2K2b1 w - - 1 2" + }, + { + "move": "Bdc5", + "fen": "6bb/5kb1/1b3b2/2b1b3/8/2b5/1b6/b2K4 w - - 1 2" + }, + { + "move": "Bf4", + "fen": "6bb/5kb1/1b3b2/8/3b1b2/2b5/1b6/b2K4 w - - 1 2" + }, + { + "move": "Bg3", + "fen": "6bb/5kb1/1b3b2/8/3b4/2b3b1/1b6/b2K4 w - - 1 2" + }, + { + "move": "Bh2", + "fen": "6bb/5kb1/1b3b2/8/3b4/2b5/1b5b/b2K4 w - - 1 2" + }, + { + "move": "Bd6", + "fen": "6bb/5kb1/1b1b1b2/8/3b4/2b5/1b6/b2K4 w - - 1 2" + }, + { + "move": "Bec7", + "fen": "6bb/2b2kb1/1b3b2/8/3b4/2b5/1b6/b2K4 w - - 1 2" + }, + { + "move": "Bb8", + "fen": "1b4bb/5kb1/1b3b2/8/3b4/2b5/1b6/b2K4 w - - 1 2" + }, + { + "move": "Bba5", + "fen": "6bb/5kb1/5b2/b3b3/3b4/2b5/1b6/b2K4 w - - 1 2" + }, + { + "move": "Bbc5", + "fen": "6bb/5kb1/5b2/2b1b3/3b4/2b5/1b6/b2K4 w - - 1 2" + }, + { + "move": "Ba7", + "fen": "6bb/b4kb1/5b2/4b3/3b4/2b5/1b6/b2K4 w - - 1 2" + }, + { + "move": "Bbc7", + "fen": "6bb/2b2kb1/5b2/4b3/3b4/2b5/1b6/b2K4 w - - 1 2" + }, + { + "move": "Bbd8", + "fen": "3b2bb/5kb1/5b2/4b3/3b4/2b5/1b6/b2K4 w - - 1 2" + }, + { + "move": "Bg5", + "fen": "6bb/5kb1/1b6/4b1b1/3b4/2b5/1b6/b2K4 w - - 1 2" + }, + { + "move": "Bh4", + "fen": "6bb/5kb1/1b6/4b3/3b3b/2b5/1b6/b2K4 w - - 1 2" + }, + { + "move": "Be7", + "fen": "6bb/4bkb1/1b6/4b3/3b4/2b5/1b6/b2K4 w - - 1 2" + }, + { + "move": "Bfd8", + "fen": "3b2bb/5kb1/1b6/4b3/3b4/2b5/1b6/b2K4 w - - 1 2" + }, + { + "move": "Ke6", + "fen": "6bb/6b1/1b2kb2/4b3/3b4/2b5/1b6/b2K4 w - - 1 2" + }, + { + "move": "Kg6", + "fen": "6bb/6b1/1b3bk1/4b3/3b4/2b5/1b6/b2K4 w - - 1 2" + }, + { + "move": "Ke7", + "fen": "6bb/4k1b1/1b3b2/4b3/3b4/2b5/1b6/b2K4 w - - 1 2" + }, + { + "move": "Ke8", + "fen": "4k1bb/6b1/1b3b2/4b3/3b4/2b5/1b6/b2K4 w - - 1 2" + }, + { + "move": "Kf8", + "fen": "5kbb/6b1/1b3b2/4b3/3b4/2b5/1b6/b2K4 w - - 1 2" + }, + { + "move": "Bh6", + "fen": "6bb/5k2/1b3b1b/4b3/3b4/2b5/1b6/b2K4 w - - 1 2" + }, + { + "move": "Bf8", + "fen": "5bbb/5k2/1b3b2/4b3/3b4/2b5/1b6/b2K4 w - - 1 2" + }, + { + "move": "Bh7", + "fen": "7b/5kbb/1b3b2/4b3/3b4/2b5/1b6/b2K4 w - - 1 2" + } + ] + }, + { + "start": { + "fen": "1Bk5/B1B5/1B1B4/B1B4B/1B6/B7/5K2/8 w - - 0 1", + "description": "The maximum number of bishops, mostly black, but not many moves." + }, + "expected": [ + { + "move": "Ke1", + "fen": "1Bk5/B1B5/1B1B4/B1B4B/1B6/B7/8/4K3 b - - 1 1" + }, + { + "move": "Kf1", + "fen": "1Bk5/B1B5/1B1B4/B1B4B/1B6/B7/8/5K2 b - - 1 1" + }, + { + "move": "Kg1", + "fen": "1Bk5/B1B5/1B1B4/B1B4B/1B6/B7/8/6K1 b - - 1 1" + }, + { + "move": "Ke2", + "fen": "1Bk5/B1B5/1B1B4/B1B4B/1B6/B7/4K3/8 b - - 1 1" + }, + { + "move": "Kg2", + "fen": "1Bk5/B1B5/1B1B4/B1B4B/1B6/B7/6K1/8 b - - 1 1" + }, + { + "move": "Ke3", + "fen": "1Bk5/B1B5/1B1B4/B1B4B/1B6/B3K3/8/8 b - - 1 1" + }, + { + "move": "Kf3", + "fen": "1Bk5/B1B5/1B1B4/B1B4B/1B6/B4K2/8/8 b - - 1 1" + }, + { + "move": "Kg3", + "fen": "1Bk5/B1B5/1B1B4/B1B4B/1B6/B5K1/8/8 b - - 1 1" + }, + { + "move": "Bb2", + "fen": "1Bk5/B1B5/1B1B4/B1B4B/1B6/8/1B3K2/8 b - - 1 1" + }, + { + "move": "Bc1", + "fen": "1Bk5/B1B5/1B1B4/B1B4B/1B6/8/5K2/2B5 b - - 1 1" + }, + { + "move": "Bc3", + "fen": "1Bk5/B1B5/1B1B4/B1B4B/8/B1B5/5K2/8 b - - 1 1" + }, + { + "move": "Bd2", + "fen": "1Bk5/B1B5/1B1B4/B1B4B/8/B7/3B1K2/8 b - - 1 1" + }, + { + "move": "Be1", + "fen": "1Bk5/B1B5/1B1B4/B1B4B/8/B7/5K2/4B3 b - - 1 1" + }, + { + "move": "Bd4", + "fen": "1Bk5/B1B5/1B1B4/B6B/1B1B4/B7/5K2/8 b - - 1 1" + }, + { + "move": "Be3", + "fen": "1Bk5/B1B5/1B1B4/B6B/1B6/B3B3/5K2/8 b - - 1 1" + }, + { + "move": "Bg4+", + "fen": "1Bk5/B1B5/1B1B4/B1B5/1B4B1/B7/5K2/8 b - - 1 1" + }, + { + "move": "Bf3", + "fen": "1Bk5/B1B5/1B1B4/B1B5/1B6/B4B2/5K2/8 b - - 1 1" + }, + { + "move": "Be2", + "fen": "1Bk5/B1B5/1B1B4/B1B5/1B6/B7/4BK2/8 b - - 1 1" + }, + { + "move": "Bd1", + "fen": "1Bk5/B1B5/1B1B4/B1B5/1B6/B7/5K2/3B4 b - - 1 1" + }, + { + "move": "Bg6", + "fen": "1Bk5/B1B5/1B1B2B1/B1B5/1B6/B7/5K2/8 b - - 1 1" + }, + { + "move": "Bf7", + "fen": "1Bk5/B1B2B2/1B1B4/B1B5/1B6/B7/5K2/8 b - - 1 1" + }, + { + "move": "Be8", + "fen": "1Bk1B3/B1B5/1B1B4/B1B5/1B6/B7/5K2/8 b - - 1 1" + }, + { + "move": "Be5", + "fen": "1Bk5/B1B5/1B6/B1B1B2B/1B6/B7/5K2/8 b - - 1 1" + }, + { + "move": "Bf4", + "fen": "1Bk5/B1B5/1B6/B1B4B/1B3B2/B7/5K2/8 b - - 1 1" + }, + { + "move": "Bg3", + "fen": "1Bk5/B1B5/1B6/B1B4B/1B6/B5B1/5K2/8 b - - 1 1" + }, + { + "move": "Bh2", + "fen": "1Bk5/B1B5/1B6/B1B4B/1B6/B7/5K1B/8 b - - 1 1" + }, + { + "move": "Be7", + "fen": "1Bk5/B1B1B3/1B6/B1B4B/1B6/B7/5K2/8 b - - 1 1" + }, + { + "move": "Bf8", + "fen": "1Bk2B2/B1B5/1B6/B1B4B/1B6/B7/5K2/8 b - - 1 1" + }, + { + "move": "Bd8", + "fen": "1BkB4/B7/1B1B4/B1B4B/1B6/B7/5K2/8 b - - 1 1" + } + ] + }, + { + "description": "Transpose of 1Bk5/B1B5/1B1B4/B1B4B/1B6/B7/5K2/8 w - - 0 1", + "start": { + "fen": "8/5k2/b7/1b6/b1b4b/1b1b4/b1b5/1bK5 b - - 0 1", + "description": "The maximum number of bishops, mostly white, but not many moves." + }, + "expected": [ + { + "move": "Bd1", + "fen": "8/5k2/b7/1b6/b1b4b/1b1b4/b7/1bKb4 w - - 1 2" + }, + { + "move": "Be2", + "fen": "8/5k2/b7/1b6/b1b4b/1b6/b1b1b3/1bK5 w - - 1 2" + }, + { + "move": "Bf1", + "fen": "8/5k2/b7/1b6/b1b4b/1b6/b1b5/1bK2b2 w - - 1 2" + }, + { + "move": "Be4", + "fen": "8/5k2/b7/1b6/b1b1b2b/1b6/b1b5/1bK5 w - - 1 2" + }, + { + "move": "Bf5", + "fen": "8/5k2/b7/1b3b2/b1b4b/1b6/b1b5/1bK5 w - - 1 2" + }, + { + "move": "Bg6", + "fen": "8/5k2/b5b1/1b6/b1b4b/1b6/b1b5/1bK5 w - - 1 2" + }, + { + "move": "Bh7", + "fen": "8/5k1b/b7/1b6/b1b4b/1b6/b1b5/1bK5 w - - 1 2" + }, + { + "move": "Bd5", + "fen": "8/5k2/b7/1b1b4/b6b/1b1b4/b1b5/1bK5 w - - 1 2" + }, + { + "move": "Be6", + "fen": "8/5k2/b3b3/1b6/b6b/1b1b4/b1b5/1bK5 w - - 1 2" + }, + { + "move": "Bg3", + "fen": "8/5k2/b7/1b6/b1b5/1b1b2b1/b1b5/1bK5 w - - 1 2" + }, + { + "move": "Bf2", + "fen": "8/5k2/b7/1b6/b1b5/1b1b4/b1b2b2/1bK5 w - - 1 2" + }, + { + "move": "Be1", + "fen": "8/5k2/b7/1b6/b1b5/1b1b4/b1b5/1bK1b3 w - - 1 2" + }, + { + "move": "Bg5+", + "fen": "8/5k2/b7/1b4b1/b1b5/1b1b4/b1b5/1bK5 w - - 1 2" + }, + { + "move": "Bf6", + "fen": "8/5k2/b4b2/1b6/b1b5/1b1b4/b1b5/1bK5 w - - 1 2" + }, + { + "move": "Be7", + "fen": "8/4bk2/b7/1b6/b1b5/1b1b4/b1b5/1bK5 w - - 1 2" + }, + { + "move": "Bd8", + "fen": "3b4/5k2/b7/1b6/b1b5/1b1b4/b1b5/1bK5 w - - 1 2" + }, + { + "move": "Bc6", + "fen": "8/5k2/b1b5/8/b1b4b/1b1b4/b1b5/1bK5 w - - 1 2" + }, + { + "move": "Bd7", + "fen": "8/3b1k2/b7/8/b1b4b/1b1b4/b1b5/1bK5 w - - 1 2" + }, + { + "move": "Be8", + "fen": "4b3/5k2/b7/8/b1b4b/1b1b4/b1b5/1bK5 w - - 1 2" + }, + { + "move": "Bb7", + "fen": "8/1b3k2/8/1b6/b1b4b/1b1b4/b1b5/1bK5 w - - 1 2" + }, + { + "move": "Bc8", + "fen": "2b5/5k2/8/1b6/b1b4b/1b1b4/b1b5/1bK5 w - - 1 2" + }, + { + "move": "Ke6", + "fen": "8/8/b3k3/1b6/b1b4b/1b1b4/b1b5/1bK5 w - - 1 2" + }, + { + "move": "Kf6", + "fen": "8/8/b4k2/1b6/b1b4b/1b1b4/b1b5/1bK5 w - - 1 2" + }, + { + "move": "Kg6", + "fen": "8/8/b5k1/1b6/b1b4b/1b1b4/b1b5/1bK5 w - - 1 2" + }, + { + "move": "Ke7", + "fen": "8/4k3/b7/1b6/b1b4b/1b1b4/b1b5/1bK5 w - - 1 2" + }, + { + "move": "Kg7", + "fen": "8/6k1/b7/1b6/b1b4b/1b1b4/b1b5/1bK5 w - - 1 2" + }, + { + "move": "Ke8", + "fen": "4k3/8/b7/1b6/b1b4b/1b1b4/b1b5/1bK5 w - - 1 2" + }, + { + "move": "Kf8", + "fen": "5k2/8/b7/1b6/b1b4b/1b1b4/b1b5/1bK5 w - - 1 2" + }, + { + "move": "Kg8", + "fen": "6k1/8/b7/1b6/b1b4b/1b1b4/b1b5/1bK5 w - - 1 2" + } + ] + }, + { + "start": { + "fen": "BBB5/BBB5/BBB4k/B1K5/8/8/8/8 w - - 0 1", + "description": "The maximum number of bishops, mixed color, but few moves." + }, + "expected": [ + { + "move": "Bb4", + "fen": "BBB5/BBB5/BBB4k/2K5/1B6/8/8/8 b - - 1 1" + }, + { + "move": "Bc3", + "fen": "BBB5/BBB5/BBB4k/2K5/8/2B5/8/8 b - - 1 1" + }, + { + "move": "Bd2+", + "fen": "BBB5/BBB5/BBB4k/2K5/8/8/3B4/8 b - - 1 1" + }, + { + "move": "Be1", + "fen": "BBB5/BBB5/BBB4k/2K5/8/8/8/4B3 b - - 1 1" + }, + { + "move": "Kb4", + "fen": "BBB5/BBB5/BBB4k/B7/1K6/8/8/8 b - - 1 1" + }, + { + "move": "Kc4", + "fen": "BBB5/BBB5/BBB4k/B7/2K5/8/8/8 b - - 1 1" + }, + { + "move": "Kd4", + "fen": "BBB5/BBB5/BBB4k/B7/3K4/8/8/8 b - - 1 1" + }, + { + "move": "Kb5", + "fen": "BBB5/BBB5/BBB4k/BK6/8/8/8/8 b - - 1 1" + }, + { + "move": "Kd5", + "fen": "BBB5/BBB5/BBB4k/B2K4/8/8/8/8 b - - 1 1" + }, + { + "move": "Kd6", + "fen": "BBB5/BBB5/BBBK3k/B7/8/8/8/8 b - - 1 1" + }, + { + "move": "Bab5", + "fen": "BBB5/BBB5/1BB4k/BBK5/8/8/8/8 b - - 1 1" + }, + { + "move": "Bc4", + "fen": "BBB5/BBB5/1BB4k/B1K5/2B5/8/8/8 b - - 1 1" + }, + { + "move": "Bd3", + "fen": "BBB5/BBB5/1BB4k/B1K5/8/3B4/8/8 b - - 1 1" + }, + { + "move": "Be2", + "fen": "BBB5/BBB5/1BB4k/B1K5/8/8/4B3/8 b - - 1 1" + }, + { + "move": "Bf1", + "fen": "BBB5/BBB5/1BB4k/B1K5/8/8/8/5B2 b - - 1 1" + }, + { + "move": "Bcb5", + "fen": "BBB5/BBB5/BB5k/BBK5/8/8/8/8 b - - 1 1" + }, + { + "move": "Ba4", + "fen": "BBB5/BBB5/BB5k/B1K5/B7/8/8/8 b - - 1 1" + }, + { + "move": "Bd5", + "fen": "BBB5/BBB5/BB5k/B1KB4/8/8/8/8 b - - 1 1" + }, + { + "move": "Be4", + "fen": "BBB5/BBB5/BB5k/B1K5/4B3/8/8/8 b - - 1 1" + }, + { + "move": "Bf3", + "fen": "BBB5/BBB5/BB5k/B1K5/8/5B2/8/8 b - - 1 1" + }, + { + "move": "Bg2", + "fen": "BBB5/BBB5/BB5k/B1K5/8/8/6B1/8 b - - 1 1" + }, + { + "move": "Bh1", + "fen": "BBB5/BBB5/BB5k/B1K5/8/8/8/7B b - - 1 1" + }, + { + "move": "B6d7", + "fen": "BBB5/BBBB4/BB5k/B1K5/8/8/8/8 b - - 1 1" + }, + { + "move": "Be8", + "fen": "BBB1B3/BBB5/BB5k/B1K5/8/8/8/8 b - - 1 1" + }, + { + "move": "Bd6", + "fen": "BBB5/BB6/BBBB3k/B1K5/8/8/8/8 b - - 1 1" + }, + { + "move": "Be5", + "fen": "BBB5/BB6/BBB4k/B1K1B3/8/8/8/8 b - - 1 1" + }, + { + "move": "Bf4+", + "fen": "BBB5/BB6/BBB4k/B1K5/5B2/8/8/8 b - - 1 1" + }, + { + "move": "Bg3", + "fen": "BBB5/BB6/BBB4k/B1K5/8/6B1/8/8 b - - 1 1" + }, + { + "move": "Bh2", + "fen": "BBB5/BB6/BBB4k/B1K5/8/8/7B/8 b - - 1 1" + }, + { + "move": "Bd8", + "fen": "BBBB4/BB6/BBB4k/B1K5/8/8/8/8 b - - 1 1" + }, + { + "move": "B8d7", + "fen": "BB6/BBBB4/BBB4k/B1K5/8/8/8/8 b - - 1 1" + }, + { + "move": "Be6", + "fen": "BB6/BBB5/BBB1B2k/B1K5/8/8/8/8 b - - 1 1" + }, + { + "move": "Bf5", + "fen": "BB6/BBB5/BBB4k/B1K2B2/8/8/8/8 b - - 1 1" + }, + { + "move": "Bg4", + "fen": "BB6/BBB5/BBB4k/B1K5/6B1/8/8/8 b - - 1 1" + }, + { + "move": "Bh3", + "fen": "BB6/BBB5/BBB4k/B1K5/8/7B/8/8 b - - 1 1" + } + ] + }, + { + "description": "Transpose of BBB5/BBB5/BBB4k/B1K5/8/8/8/8 w - - 0 1", + "start": { + "fen": "8/8/8/8/b1k5/bbb4K/bbb5/bbb5 b - - 0 1", + "description": "The maximum number of bishops, mixed color, but few moves." + }, + "expected": [ + { + "move": "B1d2", + "fen": "8/8/8/8/b1k5/bbb4K/bbbb4/bb6 w - - 1 2" + }, + { + "move": "Be3", + "fen": "8/8/8/8/b1k5/bbb1b2K/bbb5/bb6 w - - 1 2" + }, + { + "move": "Bf4", + "fen": "8/8/8/8/b1k2b2/bbb4K/bbb5/bb6 w - - 1 2" + }, + { + "move": "Bg5", + "fen": "8/8/8/6b1/b1k5/bbb4K/bbb5/bb6 w - - 1 2" + }, + { + "move": "Bh6", + "fen": "8/8/7b/8/b1k5/bbb4K/bbb5/bb6 w - - 1 2" + }, + { + "move": "Bd1", + "fen": "8/8/8/8/b1k5/bbb4K/bb6/bbbb4 w - - 1 2" + }, + { + "move": "Bd3", + "fen": "8/8/8/8/b1k5/bbbb3K/bb6/bbb5 w - - 1 2" + }, + { + "move": "Be4", + "fen": "8/8/8/8/b1k1b3/bbb4K/bb6/bbb5 w - - 1 2" + }, + { + "move": "Bf5+", + "fen": "8/8/8/5b2/b1k5/bbb4K/bb6/bbb5 w - - 1 2" + }, + { + "move": "Bg6", + "fen": "8/8/6b1/8/b1k5/bbb4K/bb6/bbb5 w - - 1 2" + }, + { + "move": "Bh7", + "fen": "8/7b/8/8/b1k5/bbb4K/bb6/bbb5 w - - 1 2" + }, + { + "move": "Bab4", + "fen": "8/8/8/8/bbk5/1bb4K/bbb5/bbb5 w - - 1 2" + }, + { + "move": "Bc5", + "fen": "8/8/8/2b5/b1k5/1bb4K/bbb5/bbb5 w - - 1 2" + }, + { + "move": "Bd6", + "fen": "8/8/3b4/8/b1k5/1bb4K/bbb5/bbb5 w - - 1 2" + }, + { + "move": "Be7", + "fen": "8/4b3/8/8/b1k5/1bb4K/bbb5/bbb5 w - - 1 2" + }, + { + "move": "Bf8", + "fen": "5b2/8/8/8/b1k5/1bb4K/bbb5/bbb5 w - - 1 2" + }, + { + "move": "B3d2", + "fen": "8/8/8/8/b1k5/bb5K/bbbb4/bbb5 w - - 1 2" + }, + { + "move": "Be1", + "fen": "8/8/8/8/b1k5/bb5K/bbb5/bbb1b3 w - - 1 2" + }, + { + "move": "Bcb4", + "fen": "8/8/8/8/bbk5/bb5K/bbb5/bbb5 w - - 1 2" + }, + { + "move": "Ba5", + "fen": "8/8/8/b7/b1k5/bb5K/bbb5/bbb5 w - - 1 2" + }, + { + "move": "Bd4", + "fen": "8/8/8/8/b1kb4/bb5K/bbb5/bbb5 w - - 1 2" + }, + { + "move": "Be5", + "fen": "8/8/8/4b3/b1k5/bb5K/bbb5/bbb5 w - - 1 2" + }, + { + "move": "Bf6", + "fen": "8/8/5b2/8/b1k5/bb5K/bbb5/bbb5 w - - 1 2" + }, + { + "move": "Bg7", + "fen": "8/6b1/8/8/b1k5/bb5K/bbb5/bbb5 w - - 1 2" + }, + { + "move": "Bh8", + "fen": "7b/8/8/8/b1k5/bb5K/bbb5/bbb5 w - - 1 2" + }, + { + "move": "Bb5", + "fen": "8/8/8/1b6/2k5/bbb4K/bbb5/bbb5 w - - 1 2" + }, + { + "move": "Bc6", + "fen": "8/8/2b5/8/2k5/bbb4K/bbb5/bbb5 w - - 1 2" + }, + { + "move": "Bd7+", + "fen": "8/3b4/8/8/2k5/bbb4K/bbb5/bbb5 w - - 1 2" + }, + { + "move": "Be8", + "fen": "4b3/8/8/8/2k5/bbb4K/bbb5/bbb5 w - - 1 2" + }, + { + "move": "Kd3", + "fen": "8/8/8/8/b7/bbbk3K/bbb5/bbb5 w - - 1 2" + }, + { + "move": "Kb4", + "fen": "8/8/8/8/bk6/bbb4K/bbb5/bbb5 w - - 1 2" + }, + { + "move": "Kd4", + "fen": "8/8/8/8/b2k4/bbb4K/bbb5/bbb5 w - - 1 2" + }, + { + "move": "Kb5", + "fen": "8/8/8/1k6/b7/bbb4K/bbb5/bbb5 w - - 1 2" + }, + { + "move": "Kc5", + "fen": "8/8/8/2k5/b7/bbb4K/bbb5/bbb5 w - - 1 2" + }, + { + "move": "Kd5", + "fen": "8/8/8/3k4/b7/bbb4K/bbb5/bbb5 w - - 1 2" + } + ] + }, + { + "start": { + "fen": "4k3/8/8/p1K1Pp1r/Pp5p/6pP/6P1/8 w - f6 0 1", + "description": "White can't en passant capture because that would put them into check." + }, + "expected": [ + { + "move": "Kc4", + "fen": "4k3/8/8/p3Pp1r/PpK4p/6pP/6P1/8 b - - 1 1" + }, + { + "move": "Kd4", + "fen": "4k3/8/8/p3Pp1r/Pp1K3p/6pP/6P1/8 b - - 1 1" + }, + { + "move": "Kb5", + "fen": "4k3/8/8/pK2Pp1r/Pp5p/6pP/6P1/8 b - - 1 1" + }, + { + "move": "Kd5", + "fen": "4k3/8/8/p2KPp1r/Pp5p/6pP/6P1/8 b - - 1 1" + }, + { + "move": "Kb6", + "fen": "4k3/8/1K6/p3Pp1r/Pp5p/6pP/6P1/8 b - - 1 1" + }, + { + "move": "Kc6", + "fen": "4k3/8/2K5/p3Pp1r/Pp5p/6pP/6P1/8 b - - 1 1" + }, + { + "move": "Kd6", + "fen": "4k3/8/3K4/p3Pp1r/Pp5p/6pP/6P1/8 b - - 1 1" + }, + { + "move": "e6", + "fen": "4k3/8/4P3/p1K2p1r/Pp5p/6pP/6P1/8 b - - 0 1" + } + ] + }, + { + "description": "Transpose of 4k3/8/8/p1K1Pp1r/Pp5p/6pP/6P1/8 w - f6 0 1", + "start": { + "fen": "8/6p1/6Pp/pP5P/P1k1pP1R/8/8/4K3 b - f3 0 1", + "description": "Black can't en passant capture because that would put them into check." + }, + "expected": [ + { + "move": "Kb3", + "fen": "8/6p1/6Pp/pP5P/P3pP1R/1k6/8/4K3 w - - 1 2" + }, + { + "move": "Kc3", + "fen": "8/6p1/6Pp/pP5P/P3pP1R/2k5/8/4K3 w - - 1 2" + }, + { + "move": "Kd3", + "fen": "8/6p1/6Pp/pP5P/P3pP1R/3k4/8/4K3 w - - 1 2" + }, + { + "move": "Kb4", + "fen": "8/6p1/6Pp/pP5P/Pk2pP1R/8/8/4K3 w - - 1 2" + }, + { + "move": "Kd4", + "fen": "8/6p1/6Pp/pP5P/P2kpP1R/8/8/4K3 w - - 1 2" + }, + { + "move": "Kc5", + "fen": "8/6p1/6Pp/pPk4P/P3pP1R/8/8/4K3 w - - 1 2" + }, + { + "move": "Kd5", + "fen": "8/6p1/6Pp/pP1k3P/P3pP1R/8/8/4K3 w - - 1 2" + }, + { + "move": "e3", + "fen": "8/6p1/6Pp/pP5P/P1k2P1R/4p3/8/4K3 w - - 0 2" + } + ] + }, + { + "start": { + "fen": "8/8/8/p7/PR1Ppk1p/6pP/6P1/2K5 b - d3 0 1", + "description": "Black can't en passant capture because that would put them into check." + }, + "expected": [ + { + "move": "e3", + "fen": "8/8/8/p7/PR1P1k1p/4p1pP/6P1/2K5 w - - 0 2" + }, + { + "move": "Ke3", + "fen": "8/8/8/p7/PR1Pp2p/4k1pP/6P1/2K5 w - - 1 2" + }, + { + "move": "Kf5", + "fen": "8/8/8/p4k2/PR1Pp2p/6pP/6P1/2K5 w - - 1 2" + }, + { + "move": "Kg5", + "fen": "8/8/8/p5k1/PR1Pp2p/6pP/6P1/2K5 w - - 1 2" + }, + { + "move": "axb4", + "fen": "8/8/8/8/Pp1Ppk1p/6pP/6P1/2K5 w - - 0 2" + } + ] + }, + { + "description": "Transpose of 8/8/8/p7/PR1Ppk1p/6pP/6P1/2K5 b - d3 0 1", + "start": { + "fen": "2k5/6p1/6Pp/pr1pPK1P/P7/8/8/8 w - d6 0 1", + "description": "White can't en passant capture because that would put them into check." + }, + "expected": [ + { + "move": "axb5", + "fen": "2k5/6p1/6Pp/pP1pPK1P/8/8/8/8 b - - 0 1" + }, + { + "move": "e6", + "fen": "2k5/6p1/4P1Pp/pr1p1K1P/P7/8/8/8 b - - 0 1" + }, + { + "move": "Kf4", + "fen": "2k5/6p1/6Pp/pr1pP2P/P4K2/8/8/8 b - - 1 1" + }, + { + "move": "Kg4", + "fen": "2k5/6p1/6Pp/pr1pP2P/P5K1/8/8/8 b - - 1 1" + }, + { + "move": "Ke6", + "fen": "2k5/6p1/4K1Pp/pr1pP2P/P7/8/8/8 b - - 1 1" + } + ] + }, + { + "start": { + "fen": "nnnnnnnn/8/8/8/P2P1k2/8/6P1/n1K4n b - - 0 1", + "description": "Black with maximal knights, attacking many off-the-board squares." + }, + "expected": [ + { + "move": "Nc2", + "fen": "nnnnnnnn/8/8/8/P2P1k2/8/2n3P1/2K4n w - - 1 2" + }, + { + "move": "Nb3+", + "fen": "nnnnnnnn/8/8/8/P2P1k2/1n6/6P1/2K4n w - - 1 2" + }, + { + "move": "Nf2", + "fen": "nnnnnnnn/8/8/8/P2P1k2/8/5nP1/n1K5 w - - 1 2" + }, + { + "move": "Ng3", + "fen": "nnnnnnnn/8/8/8/P2P1k2/6n1/6P1/n1K5 w - - 1 2" + }, + { + "move": "Ke3", + "fen": "nnnnnnnn/8/8/8/P2P4/4k3/6P1/n1K4n w - - 1 2" + }, + { + "move": "Kg3", + "fen": "nnnnnnnn/8/8/8/P2P4/6k1/6P1/n1K4n w - - 1 2" + }, + { + "move": "Ke4", + "fen": "nnnnnnnn/8/8/8/P2Pk3/8/6P1/n1K4n w - - 1 2" + }, + { + "move": "Kg4", + "fen": "nnnnnnnn/8/8/8/P2P2k1/8/6P1/n1K4n w - - 1 2" + }, + { + "move": "Kf5", + "fen": "nnnnnnnn/8/8/5k2/P2P4/8/6P1/n1K4n w - - 1 2" + }, + { + "move": "Kg5", + "fen": "nnnnnnnn/8/8/6k1/P2P4/8/6P1/n1K4n w - - 1 2" + }, + { + "move": "Nab6", + "fen": "1nnnnnnn/8/1n6/8/P2P1k2/8/6P1/n1K4n w - - 1 2" + }, + { + "move": "Nac7", + "fen": "1nnnnnnn/2n5/8/8/P2P1k2/8/6P1/n1K4n w - - 1 2" + }, + { + "move": "Na6", + "fen": "n1nnnnnn/8/n7/8/P2P1k2/8/6P1/n1K4n w - - 1 2" + }, + { + "move": "Nbc6", + "fen": "n1nnnnnn/8/2n5/8/P2P1k2/8/6P1/n1K4n w - - 1 2" + }, + { + "move": "Nbd7", + "fen": "n1nnnnnn/3n4/8/8/P2P1k2/8/6P1/n1K4n w - - 1 2" + }, + { + "move": "Ncb6", + "fen": "nn1nnnnn/8/1n6/8/P2P1k2/8/6P1/n1K4n w - - 1 2" + }, + { + "move": "Ncd6", + "fen": "nn1nnnnn/8/3n4/8/P2P1k2/8/6P1/n1K4n w - - 1 2" + }, + { + "move": "Na7", + "fen": "nn1nnnnn/n7/8/8/P2P1k2/8/6P1/n1K4n w - - 1 2" + }, + { + "move": "Nce7", + "fen": "nn1nnnnn/4n3/8/8/P2P1k2/8/6P1/n1K4n w - - 1 2" + }, + { + "move": "Ndc6", + "fen": "nnn1nnnn/8/2n5/8/P2P1k2/8/6P1/n1K4n w - - 1 2" + }, + { + "move": "Nde6", + "fen": "nnn1nnnn/8/4n3/8/P2P1k2/8/6P1/n1K4n w - - 1 2" + }, + { + "move": "Nb7", + "fen": "nnn1nnnn/1n6/8/8/P2P1k2/8/6P1/n1K4n w - - 1 2" + }, + { + "move": "Ndf7", + "fen": "nnn1nnnn/5n2/8/8/P2P1k2/8/6P1/n1K4n w - - 1 2" + }, + { + "move": "Ned6", + "fen": "nnnn1nnn/8/3n4/8/P2P1k2/8/6P1/n1K4n w - - 1 2" + }, + { + "move": "Nef6", + "fen": "nnnn1nnn/8/5n2/8/P2P1k2/8/6P1/n1K4n w - - 1 2" + }, + { + "move": "Nec7", + "fen": "nnnn1nnn/2n5/8/8/P2P1k2/8/6P1/n1K4n w - - 1 2" + }, + { + "move": "Ng7", + "fen": "nnnn1nnn/6n1/8/8/P2P1k2/8/6P1/n1K4n w - - 1 2" + }, + { + "move": "Nfe6", + "fen": "nnnnn1nn/8/4n3/8/P2P1k2/8/6P1/n1K4n w - - 1 2" + }, + { + "move": "Nfg6", + "fen": "nnnnn1nn/8/6n1/8/P2P1k2/8/6P1/n1K4n w - - 1 2" + }, + { + "move": "Nfd7", + "fen": "nnnnn1nn/3n4/8/8/P2P1k2/8/6P1/n1K4n w - - 1 2" + }, + { + "move": "Nh7", + "fen": "nnnnn1nn/7n/8/8/P2P1k2/8/6P1/n1K4n w - - 1 2" + }, + { + "move": "Ngf6", + "fen": "nnnnnn1n/8/5n2/8/P2P1k2/8/6P1/n1K4n w - - 1 2" + }, + { + "move": "Nh6", + "fen": "nnnnnn1n/8/7n/8/P2P1k2/8/6P1/n1K4n w - - 1 2" + }, + { + "move": "Nge7", + "fen": "nnnnnn1n/4n3/8/8/P2P1k2/8/6P1/n1K4n w - - 1 2" + }, + { + "move": "Nhg6", + "fen": "nnnnnnn1/8/6n1/8/P2P1k2/8/6P1/n1K4n w - - 1 2" + }, + { + "move": "Nhf7", + "fen": "nnnnnnn1/5n2/8/8/P2P1k2/8/6P1/n1K4n w - - 1 2" + } + ] + }, + { + "description": "Transpose of nnnnnnnn/8/8/8/P2P1k2/8/6P1/n1K4n b - - 0 1", + "start": { + "fen": "N1k4N/6p1/8/p2p1K2/8/8/8/NNNNNNNN w - - 0 1", + "description": "White with maximal knights, attacking many off-the-board squares." + }, + "expected": [ + { + "move": "Nac2", + "fen": "N1k4N/6p1/8/p2p1K2/8/8/2N5/1NNNNNNN b - - 1 1" + }, + { + "move": "Nab3", + "fen": "N1k4N/6p1/8/p2p1K2/8/1N6/8/1NNNNNNN b - - 1 1" + }, + { + "move": "Nbd2", + "fen": "N1k4N/6p1/8/p2p1K2/8/8/3N4/N1NNNNNN b - - 1 1" + }, + { + "move": "Na3", + "fen": "N1k4N/6p1/8/p2p1K2/8/N7/8/N1NNNNNN b - - 1 1" + }, + { + "move": "Nbc3", + "fen": "N1k4N/6p1/8/p2p1K2/8/2N5/8/N1NNNNNN b - - 1 1" + }, + { + "move": "Na2", + "fen": "N1k4N/6p1/8/p2p1K2/8/8/N7/NN1NNNNN b - - 1 1" + }, + { + "move": "Nce2", + "fen": "N1k4N/6p1/8/p2p1K2/8/8/4N3/NN1NNNNN b - - 1 1" + }, + { + "move": "Ncb3", + "fen": "N1k4N/6p1/8/p2p1K2/8/1N6/8/NN1NNNNN b - - 1 1" + }, + { + "move": "Ncd3", + "fen": "N1k4N/6p1/8/p2p1K2/8/3N4/8/NN1NNNNN b - - 1 1" + }, + { + "move": "Nb2", + "fen": "N1k4N/6p1/8/p2p1K2/8/8/1N6/NNN1NNNN b - - 1 1" + }, + { + "move": "Ndf2", + "fen": "N1k4N/6p1/8/p2p1K2/8/8/5N2/NNN1NNNN b - - 1 1" + }, + { + "move": "Ndc3", + "fen": "N1k4N/6p1/8/p2p1K2/8/2N5/8/NNN1NNNN b - - 1 1" + }, + { + "move": "Nde3", + "fen": "N1k4N/6p1/8/p2p1K2/8/4N3/8/NNN1NNNN b - - 1 1" + }, + { + "move": "Nec2", + "fen": "N1k4N/6p1/8/p2p1K2/8/8/2N5/NNNN1NNN b - - 1 1" + }, + { + "move": "Ng2", + "fen": "N1k4N/6p1/8/p2p1K2/8/8/6N1/NNNN1NNN b - - 1 1" + }, + { + "move": "Ned3", + "fen": "N1k4N/6p1/8/p2p1K2/8/3N4/8/NNNN1NNN b - - 1 1" + }, + { + "move": "Nef3", + "fen": "N1k4N/6p1/8/p2p1K2/8/5N2/8/NNNN1NNN b - - 1 1" + }, + { + "move": "Nfd2", + "fen": "N1k4N/6p1/8/p2p1K2/8/8/3N4/NNNNN1NN b - - 1 1" + }, + { + "move": "Nh2", + "fen": "N1k4N/6p1/8/p2p1K2/8/8/7N/NNNNN1NN b - - 1 1" + }, + { + "move": "Nfe3", + "fen": "N1k4N/6p1/8/p2p1K2/8/4N3/8/NNNNN1NN b - - 1 1" + }, + { + "move": "Nfg3", + "fen": "N1k4N/6p1/8/p2p1K2/8/6N1/8/NNNNN1NN b - - 1 1" + }, + { + "move": "Nge2", + "fen": "N1k4N/6p1/8/p2p1K2/8/8/4N3/NNNNNN1N b - - 1 1" + }, + { + "move": "Ngf3", + "fen": "N1k4N/6p1/8/p2p1K2/8/5N2/8/NNNNNN1N b - - 1 1" + }, + { + "move": "Nh3", + "fen": "N1k4N/6p1/8/p2p1K2/8/7N/8/NNNNNN1N b - - 1 1" + }, + { + "move": "Nhf2", + "fen": "N1k4N/6p1/8/p2p1K2/8/8/5N2/NNNNNNN1 b - - 1 1" + }, + { + "move": "Nhg3", + "fen": "N1k4N/6p1/8/p2p1K2/8/6N1/8/NNNNNNN1 b - - 1 1" + }, + { + "move": "Kf4", + "fen": "N1k4N/6p1/8/p2p4/5K2/8/8/NNNNNNNN b - - 1 1" + }, + { + "move": "Kg4", + "fen": "N1k4N/6p1/8/p2p4/6K1/8/8/NNNNNNNN b - - 1 1" + }, + { + "move": "Ke5", + "fen": "N1k4N/6p1/8/p2pK3/8/8/8/NNNNNNNN b - - 1 1" + }, + { + "move": "Kg5", + "fen": "N1k4N/6p1/8/p2p2K1/8/8/8/NNNNNNNN b - - 1 1" + }, + { + "move": "Ke6", + "fen": "N1k4N/6p1/4K3/p2p4/8/8/8/NNNNNNNN b - - 1 1" + }, + { + "move": "Kg6", + "fen": "N1k4N/6p1/6K1/p2p4/8/8/8/NNNNNNNN b - - 1 1" + }, + { + "move": "Nb6+", + "fen": "2k4N/6p1/1N6/p2p1K2/8/8/8/NNNNNNNN b - - 1 1" + }, + { + "move": "Nc7", + "fen": "2k4N/2N3p1/8/p2p1K2/8/8/8/NNNNNNNN b - - 1 1" + }, + { + "move": "Ng6", + "fen": "N1k5/6p1/6N1/p2p1K2/8/8/8/NNNNNNNN b - - 1 1" + }, + { + "move": "Nf7", + "fen": "N1k5/5Np1/8/p2p1K2/8/8/8/NNNNNNNN b - - 1 1" + } + ] + }, + { + "start": { + "fen": "n6n/8/8/8/P1KP1k2/8/6P1/nnnnnnnn b - - 0 1", + "description": "Another position with maximum knights." + }, + "expected": [ + { + "move": "Nac2", + "fen": "n6n/8/8/8/P1KP1k2/8/2n3P1/1nnnnnnn w - - 1 2" + }, + { + "move": "Nab3", + "fen": "n6n/8/8/8/P1KP1k2/1n6/6P1/1nnnnnnn w - - 1 2" + }, + { + "move": "Nbd2+", + "fen": "n6n/8/8/8/P1KP1k2/8/3n2P1/n1nnnnnn w - - 1 2" + }, + { + "move": "Na3+", + "fen": "n6n/8/8/8/P1KP1k2/n7/6P1/n1nnnnnn w - - 1 2" + }, + { + "move": "Nbc3", + "fen": "n6n/8/8/8/P1KP1k2/2n5/6P1/n1nnnnnn w - - 1 2" + }, + { + "move": "Na2", + "fen": "n6n/8/8/8/P1KP1k2/8/n5P1/nn1nnnnn w - - 1 2" + }, + { + "move": "Nce2", + "fen": "n6n/8/8/8/P1KP1k2/8/4n1P1/nn1nnnnn w - - 1 2" + }, + { + "move": "Ncb3", + "fen": "n6n/8/8/8/P1KP1k2/1n6/6P1/nn1nnnnn w - - 1 2" + }, + { + "move": "Ncd3", + "fen": "n6n/8/8/8/P1KP1k2/3n4/6P1/nn1nnnnn w - - 1 2" + }, + { + "move": "Nb2+", + "fen": "n6n/8/8/8/P1KP1k2/8/1n4P1/nnn1nnnn w - - 1 2" + }, + { + "move": "Ndf2", + "fen": "n6n/8/8/8/P1KP1k2/8/5nP1/nnn1nnnn w - - 1 2" + }, + { + "move": "Ndc3", + "fen": "n6n/8/8/8/P1KP1k2/2n5/6P1/nnn1nnnn w - - 1 2" + }, + { + "move": "Nde3+", + "fen": "n6n/8/8/8/P1KP1k2/4n3/6P1/nnn1nnnn w - - 1 2" + }, + { + "move": "Nec2", + "fen": "n6n/8/8/8/P1KP1k2/8/2n3P1/nnnn1nnn w - - 1 2" + }, + { + "move": "Nxg2", + "fen": "n6n/8/8/8/P1KP1k2/8/6n1/nnnn1nnn w - - 0 2" + }, + { + "move": "Ned3", + "fen": "n6n/8/8/8/P1KP1k2/3n4/6P1/nnnn1nnn w - - 1 2" + }, + { + "move": "Nef3", + "fen": "n6n/8/8/8/P1KP1k2/5n2/6P1/nnnn1nnn w - - 1 2" + }, + { + "move": "Nfd2+", + "fen": "n6n/8/8/8/P1KP1k2/8/3n2P1/nnnnn1nn w - - 1 2" + }, + { + "move": "Nh2", + "fen": "n6n/8/8/8/P1KP1k2/8/6Pn/nnnnn1nn w - - 1 2" + }, + { + "move": "Nfe3+", + "fen": "n6n/8/8/8/P1KP1k2/4n3/6P1/nnnnn1nn w - - 1 2" + }, + { + "move": "Nfg3", + "fen": "n6n/8/8/8/P1KP1k2/6n1/6P1/nnnnn1nn w - - 1 2" + }, + { + "move": "Nge2", + "fen": "n6n/8/8/8/P1KP1k2/8/4n1P1/nnnnnn1n w - - 1 2" + }, + { + "move": "Ngf3", + "fen": "n6n/8/8/8/P1KP1k2/5n2/6P1/nnnnnn1n w - - 1 2" + }, + { + "move": "Nh3", + "fen": "n6n/8/8/8/P1KP1k2/7n/6P1/nnnnnn1n w - - 1 2" + }, + { + "move": "Nhf2", + "fen": "n6n/8/8/8/P1KP1k2/8/5nP1/nnnnnnn1 w - - 1 2" + }, + { + "move": "Nhg3", + "fen": "n6n/8/8/8/P1KP1k2/6n1/6P1/nnnnnnn1 w - - 1 2" + }, + { + "move": "Ke3", + "fen": "n6n/8/8/8/P1KP4/4k3/6P1/nnnnnnnn w - - 1 2" + }, + { + "move": "Kg3", + "fen": "n6n/8/8/8/P1KP4/6k1/6P1/nnnnnnnn w - - 1 2" + }, + { + "move": "Ke4", + "fen": "n6n/8/8/8/P1KPk3/8/6P1/nnnnnnnn w - - 1 2" + }, + { + "move": "Kg4", + "fen": "n6n/8/8/8/P1KP2k1/8/6P1/nnnnnnnn w - - 1 2" + }, + { + "move": "Kf5", + "fen": "n6n/8/8/5k2/P1KP4/8/6P1/nnnnnnnn w - - 1 2" + }, + { + "move": "Kg5", + "fen": "n6n/8/8/6k1/P1KP4/8/6P1/nnnnnnnn w - - 1 2" + }, + { + "move": "Nb6+", + "fen": "7n/8/1n6/8/P1KP1k2/8/6P1/nnnnnnnn w - - 1 2" + }, + { + "move": "Nc7", + "fen": "7n/2n5/8/8/P1KP1k2/8/6P1/nnnnnnnn w - - 1 2" + }, + { + "move": "Ng6", + "fen": "n7/8/6n1/8/P1KP1k2/8/6P1/nnnnnnnn w - - 1 2" + }, + { + "move": "Nf7", + "fen": "n7/5n2/8/8/P1KP1k2/8/6P1/nnnnnnnn w - - 1 2" + } + ] + }, + { + "description": "Transpose of n6n/8/8/8/P1KP1k2/8/6P1/nnnnnnnn b - - 0 1", + "start": { + "fen": "NNNNNNNN/6p1/8/p1kp1K2/8/8/8/N6N w - - 0 1", + "description": "Another position with maximum knights." + }, + "expected": [ + { + "move": "Nc2", + "fen": "NNNNNNNN/6p1/8/p1kp1K2/8/8/2N5/7N b - - 1 1" + }, + { + "move": "Nb3+", + "fen": "NNNNNNNN/6p1/8/p1kp1K2/8/1N6/8/7N b - - 1 1" + }, + { + "move": "Nf2", + "fen": "NNNNNNNN/6p1/8/p1kp1K2/8/8/5N2/N7 b - - 1 1" + }, + { + "move": "Ng3", + "fen": "NNNNNNNN/6p1/8/p1kp1K2/8/6N1/8/N7 b - - 1 1" + }, + { + "move": "Kf4", + "fen": "NNNNNNNN/6p1/8/p1kp4/5K2/8/8/N6N b - - 1 1" + }, + { + "move": "Kg4", + "fen": "NNNNNNNN/6p1/8/p1kp4/6K1/8/8/N6N b - - 1 1" + }, + { + "move": "Ke5", + "fen": "NNNNNNNN/6p1/8/p1kpK3/8/8/8/N6N b - - 1 1" + }, + { + "move": "Kg5", + "fen": "NNNNNNNN/6p1/8/p1kp2K1/8/8/8/N6N b - - 1 1" + }, + { + "move": "Ke6", + "fen": "NNNNNNNN/6p1/4K3/p1kp4/8/8/8/N6N b - - 1 1" + }, + { + "move": "Kg6", + "fen": "NNNNNNNN/6p1/6K1/p1kp4/8/8/8/N6N b - - 1 1" + }, + { + "move": "Nab6", + "fen": "1NNNNNNN/6p1/1N6/p1kp1K2/8/8/8/N6N b - - 1 1" + }, + { + "move": "Nac7", + "fen": "1NNNNNNN/2N3p1/8/p1kp1K2/8/8/8/N6N b - - 1 1" + }, + { + "move": "Na6+", + "fen": "N1NNNNNN/6p1/N7/p1kp1K2/8/8/8/N6N b - - 1 1" + }, + { + "move": "Nbc6", + "fen": "N1NNNNNN/6p1/2N5/p1kp1K2/8/8/8/N6N b - - 1 1" + }, + { + "move": "Nbd7+", + "fen": "N1NNNNNN/3N2p1/8/p1kp1K2/8/8/8/N6N b - - 1 1" + }, + { + "move": "Ncb6", + "fen": "NN1NNNNN/6p1/1N6/p1kp1K2/8/8/8/N6N b - - 1 1" + }, + { + "move": "Ncd6", + "fen": "NN1NNNNN/6p1/3N4/p1kp1K2/8/8/8/N6N b - - 1 1" + }, + { + "move": "Na7", + "fen": "NN1NNNNN/N5p1/8/p1kp1K2/8/8/8/N6N b - - 1 1" + }, + { + "move": "Nce7", + "fen": "NN1NNNNN/4N1p1/8/p1kp1K2/8/8/8/N6N b - - 1 1" + }, + { + "move": "Ndc6", + "fen": "NNN1NNNN/6p1/2N5/p1kp1K2/8/8/8/N6N b - - 1 1" + }, + { + "move": "Nde6+", + "fen": "NNN1NNNN/6p1/4N3/p1kp1K2/8/8/8/N6N b - - 1 1" + }, + { + "move": "Nb7+", + "fen": "NNN1NNNN/1N4p1/8/p1kp1K2/8/8/8/N6N b - - 1 1" + }, + { + "move": "Ndf7", + "fen": "NNN1NNNN/5Np1/8/p1kp1K2/8/8/8/N6N b - - 1 1" + }, + { + "move": "Ned6", + "fen": "NNNN1NNN/6p1/3N4/p1kp1K2/8/8/8/N6N b - - 1 1" + }, + { + "move": "Nef6", + "fen": "NNNN1NNN/6p1/5N2/p1kp1K2/8/8/8/N6N b - - 1 1" + }, + { + "move": "Nec7", + "fen": "NNNN1NNN/2N3p1/8/p1kp1K2/8/8/8/N6N b - - 1 1" + }, + { + "move": "Nxg7", + "fen": "NNNN1NNN/6N1/8/p1kp1K2/8/8/8/N6N b - - 0 1" + }, + { + "move": "Nfe6+", + "fen": "NNNNN1NN/6p1/4N3/p1kp1K2/8/8/8/N6N b - - 1 1" + }, + { + "move": "Nfg6", + "fen": "NNNNN1NN/6p1/6N1/p1kp1K2/8/8/8/N6N b - - 1 1" + }, + { + "move": "Nfd7+", + "fen": "NNNNN1NN/3N2p1/8/p1kp1K2/8/8/8/N6N b - - 1 1" + }, + { + "move": "Nh7", + "fen": "NNNNN1NN/6pN/8/p1kp1K2/8/8/8/N6N b - - 1 1" + }, + { + "move": "Ngf6", + "fen": "NNNNNN1N/6p1/5N2/p1kp1K2/8/8/8/N6N b - - 1 1" + }, + { + "move": "Nh6", + "fen": "NNNNNN1N/6p1/7N/p1kp1K2/8/8/8/N6N b - - 1 1" + }, + { + "move": "Nge7", + "fen": "NNNNNN1N/4N1p1/8/p1kp1K2/8/8/8/N6N b - - 1 1" + }, + { + "move": "Nhg6", + "fen": "NNNNNNN1/6p1/6N1/p1kp1K2/8/8/8/N6N b - - 1 1" + }, + { + "move": "Nhf7", + "fen": "NNNNNNN1/5Np1/8/p1kp1K2/8/8/8/N6N b - - 1 1" + } + ] + }, + { + "start": { + "fen": "NNNNNNNN/8/8/4k3/8/3K4/8/N6N w - - 0 1", + "description": "White with maximal knights." + }, + "expected": [ + { + "move": "Nc2", + "fen": "NNNNNNNN/8/8/4k3/8/3K4/2N5/7N b - - 1 1" + }, + { + "move": "Nb3", + "fen": "NNNNNNNN/8/8/4k3/8/1N1K4/8/7N b - - 1 1" + }, + { + "move": "Nf2", + "fen": "NNNNNNNN/8/8/4k3/8/3K4/5N2/N7 b - - 1 1" + }, + { + "move": "Ng3", + "fen": "NNNNNNNN/8/8/4k3/8/3K2N1/8/N7 b - - 1 1" + }, + { + "move": "Kc2", + "fen": "NNNNNNNN/8/8/4k3/8/8/2K5/N6N b - - 1 1" + }, + { + "move": "Kd2", + "fen": "NNNNNNNN/8/8/4k3/8/8/3K4/N6N b - - 1 1" + }, + { + "move": "Ke2", + "fen": "NNNNNNNN/8/8/4k3/8/8/4K3/N6N b - - 1 1" + }, + { + "move": "Kc3", + "fen": "NNNNNNNN/8/8/4k3/8/2K5/8/N6N b - - 1 1" + }, + { + "move": "Ke3", + "fen": "NNNNNNNN/8/8/4k3/8/4K3/8/N6N b - - 1 1" + }, + { + "move": "Kc4", + "fen": "NNNNNNNN/8/8/4k3/2K5/8/8/N6N b - - 1 1" + }, + { + "move": "Nab6", + "fen": "1NNNNNNN/8/1N6/4k3/8/3K4/8/N6N b - - 1 1" + }, + { + "move": "Nac7", + "fen": "1NNNNNNN/2N5/8/4k3/8/3K4/8/N6N b - - 1 1" + }, + { + "move": "Na6", + "fen": "N1NNNNNN/8/N7/4k3/8/3K4/8/N6N b - - 1 1" + }, + { + "move": "Nbc6+", + "fen": "N1NNNNNN/8/2N5/4k3/8/3K4/8/N6N b - - 1 1" + }, + { + "move": "Nbd7+", + "fen": "N1NNNNNN/3N4/8/4k3/8/3K4/8/N6N b - - 1 1" + }, + { + "move": "Ncb6", + "fen": "NN1NNNNN/8/1N6/4k3/8/3K4/8/N6N b - - 1 1" + }, + { + "move": "Ncd6", + "fen": "NN1NNNNN/8/3N4/4k3/8/3K4/8/N6N b - - 1 1" + }, + { + "move": "Na7", + "fen": "NN1NNNNN/N7/8/4k3/8/3K4/8/N6N b - - 1 1" + }, + { + "move": "Nce7", + "fen": "NN1NNNNN/4N3/8/4k3/8/3K4/8/N6N b - - 1 1" + }, + { + "move": "Ndc6+", + "fen": "NNN1NNNN/8/2N5/4k3/8/3K4/8/N6N b - - 1 1" + }, + { + "move": "Nde6", + "fen": "NNN1NNNN/8/4N3/4k3/8/3K4/8/N6N b - - 1 1" + }, + { + "move": "Nb7", + "fen": "NNN1NNNN/1N6/8/4k3/8/3K4/8/N6N b - - 1 1" + }, + { + "move": "Ndf7+", + "fen": "NNN1NNNN/5N2/8/4k3/8/3K4/8/N6N b - - 1 1" + }, + { + "move": "Ned6", + "fen": "NNNN1NNN/8/3N4/4k3/8/3K4/8/N6N b - - 1 1" + }, + { + "move": "Nef6", + "fen": "NNNN1NNN/8/5N2/4k3/8/3K4/8/N6N b - - 1 1" + }, + { + "move": "Nec7", + "fen": "NNNN1NNN/2N5/8/4k3/8/3K4/8/N6N b - - 1 1" + }, + { + "move": "Ng7", + "fen": "NNNN1NNN/6N1/8/4k3/8/3K4/8/N6N b - - 1 1" + }, + { + "move": "Nfe6", + "fen": "NNNNN1NN/8/4N3/4k3/8/3K4/8/N6N b - - 1 1" + }, + { + "move": "Nfg6+", + "fen": "NNNNN1NN/8/6N1/4k3/8/3K4/8/N6N b - - 1 1" + }, + { + "move": "Nfd7+", + "fen": "NNNNN1NN/3N4/8/4k3/8/3K4/8/N6N b - - 1 1" + }, + { + "move": "Nh7", + "fen": "NNNNN1NN/7N/8/4k3/8/3K4/8/N6N b - - 1 1" + }, + { + "move": "Ngf6", + "fen": "NNNNNN1N/8/5N2/4k3/8/3K4/8/N6N b - - 1 1" + }, + { + "move": "Nh6", + "fen": "NNNNNN1N/8/7N/4k3/8/3K4/8/N6N b - - 1 1" + }, + { + "move": "Nge7", + "fen": "NNNNNN1N/4N3/8/4k3/8/3K4/8/N6N b - - 1 1" + }, + { + "move": "Nhg6+", + "fen": "NNNNNNN1/8/6N1/4k3/8/3K4/8/N6N b - - 1 1" + }, + { + "move": "Nhf7+", + "fen": "NNNNNNN1/5N2/8/4k3/8/3K4/8/N6N b - - 1 1" + } + ] + }, + { + "description": "Transpose of NNNNNNNN/8/8/4k3/8/3K4/8/N6N w - - 0 1", + "start": { + "fen": "n6n/8/3k4/8/4K3/8/8/nnnnnnnn b - - 0 1", + "description": "Black with maximal knights." + }, + "expected": [ + { + "move": "Nac2", + "fen": "n6n/8/3k4/8/4K3/8/2n5/1nnnnnnn w - - 1 2" + }, + { + "move": "Nab3", + "fen": "n6n/8/3k4/8/4K3/1n6/8/1nnnnnnn w - - 1 2" + }, + { + "move": "Nbd2+", + "fen": "n6n/8/3k4/8/4K3/8/3n4/n1nnnnnn w - - 1 2" + }, + { + "move": "Na3", + "fen": "n6n/8/3k4/8/4K3/n7/8/n1nnnnnn w - - 1 2" + }, + { + "move": "Nbc3+", + "fen": "n6n/8/3k4/8/4K3/2n5/8/n1nnnnnn w - - 1 2" + }, + { + "move": "Na2", + "fen": "n6n/8/3k4/8/4K3/8/n7/nn1nnnnn w - - 1 2" + }, + { + "move": "Nce2", + "fen": "n6n/8/3k4/8/4K3/8/4n3/nn1nnnnn w - - 1 2" + }, + { + "move": "Ncb3", + "fen": "n6n/8/3k4/8/4K3/1n6/8/nn1nnnnn w - - 1 2" + }, + { + "move": "Ncd3", + "fen": "n6n/8/3k4/8/4K3/3n4/8/nn1nnnnn w - - 1 2" + }, + { + "move": "Nb2", + "fen": "n6n/8/3k4/8/4K3/8/1n6/nnn1nnnn w - - 1 2" + }, + { + "move": "Ndf2+", + "fen": "n6n/8/3k4/8/4K3/8/5n2/nnn1nnnn w - - 1 2" + }, + { + "move": "Ndc3+", + "fen": "n6n/8/3k4/8/4K3/2n5/8/nnn1nnnn w - - 1 2" + }, + { + "move": "Nde3", + "fen": "n6n/8/3k4/8/4K3/4n3/8/nnn1nnnn w - - 1 2" + }, + { + "move": "Nec2", + "fen": "n6n/8/3k4/8/4K3/8/2n5/nnnn1nnn w - - 1 2" + }, + { + "move": "Ng2", + "fen": "n6n/8/3k4/8/4K3/8/6n1/nnnn1nnn w - - 1 2" + }, + { + "move": "Ned3", + "fen": "n6n/8/3k4/8/4K3/3n4/8/nnnn1nnn w - - 1 2" + }, + { + "move": "Nef3", + "fen": "n6n/8/3k4/8/4K3/5n2/8/nnnn1nnn w - - 1 2" + }, + { + "move": "Nfd2+", + "fen": "n6n/8/3k4/8/4K3/8/3n4/nnnnn1nn w - - 1 2" + }, + { + "move": "Nh2", + "fen": "n6n/8/3k4/8/4K3/8/7n/nnnnn1nn w - - 1 2" + }, + { + "move": "Nfe3", + "fen": "n6n/8/3k4/8/4K3/4n3/8/nnnnn1nn w - - 1 2" + }, + { + "move": "Nfg3+", + "fen": "n6n/8/3k4/8/4K3/6n1/8/nnnnn1nn w - - 1 2" + }, + { + "move": "Nge2", + "fen": "n6n/8/3k4/8/4K3/8/4n3/nnnnnn1n w - - 1 2" + }, + { + "move": "Ngf3", + "fen": "n6n/8/3k4/8/4K3/5n2/8/nnnnnn1n w - - 1 2" + }, + { + "move": "Nh3", + "fen": "n6n/8/3k4/8/4K3/7n/8/nnnnnn1n w - - 1 2" + }, + { + "move": "Nhf2+", + "fen": "n6n/8/3k4/8/4K3/8/5n2/nnnnnnn1 w - - 1 2" + }, + { + "move": "Nhg3+", + "fen": "n6n/8/3k4/8/4K3/6n1/8/nnnnnnn1 w - - 1 2" + }, + { + "move": "Kc5", + "fen": "n6n/8/8/2k5/4K3/8/8/nnnnnnnn w - - 1 2" + }, + { + "move": "Kc6", + "fen": "n6n/8/2k5/8/4K3/8/8/nnnnnnnn w - - 1 2" + }, + { + "move": "Ke6", + "fen": "n6n/8/4k3/8/4K3/8/8/nnnnnnnn w - - 1 2" + }, + { + "move": "Kc7", + "fen": "n6n/2k5/8/8/4K3/8/8/nnnnnnnn w - - 1 2" + }, + { + "move": "Kd7", + "fen": "n6n/3k4/8/8/4K3/8/8/nnnnnnnn w - - 1 2" + }, + { + "move": "Ke7", + "fen": "n6n/4k3/8/8/4K3/8/8/nnnnnnnn w - - 1 2" + }, + { + "move": "Nb6", + "fen": "7n/8/1n1k4/8/4K3/8/8/nnnnnnnn w - - 1 2" + }, + { + "move": "Nc7", + "fen": "7n/2n5/3k4/8/4K3/8/8/nnnnnnnn w - - 1 2" + }, + { + "move": "Ng6", + "fen": "n7/8/3k2n1/8/4K3/8/8/nnnnnnnn w - - 1 2" + }, + { + "move": "Nf7", + "fen": "n7/5n2/3k4/8/4K3/8/8/nnnnnnnn w - - 1 2" + } + ] + }, + { + "start": { + "fen": "N6N/8/8/4k3/8/3K4/8/NNNNNNNN w - - 0 1", + "description": "Another position with the max number of white knights." + }, + "expected": [ + { + "move": "Nac2", + "fen": "N6N/8/8/4k3/8/3K4/2N5/1NNNNNNN b - - 1 1" + }, + { + "move": "Nab3", + "fen": "N6N/8/8/4k3/8/1N1K4/8/1NNNNNNN b - - 1 1" + }, + { + "move": "Nbd2", + "fen": "N6N/8/8/4k3/8/3K4/3N4/N1NNNNNN b - - 1 1" + }, + { + "move": "Na3", + "fen": "N6N/8/8/4k3/8/N2K4/8/N1NNNNNN b - - 1 1" + }, + { + "move": "Nbc3", + "fen": "N6N/8/8/4k3/8/2NK4/8/N1NNNNNN b - - 1 1" + }, + { + "move": "Na2", + "fen": "N6N/8/8/4k3/8/3K4/N7/NN1NNNNN b - - 1 1" + }, + { + "move": "Nce2", + "fen": "N6N/8/8/4k3/8/3K4/4N3/NN1NNNNN b - - 1 1" + }, + { + "move": "Ncb3", + "fen": "N6N/8/8/4k3/8/1N1K4/8/NN1NNNNN b - - 1 1" + }, + { + "move": "Nb2", + "fen": "N6N/8/8/4k3/8/3K4/1N6/NNN1NNNN b - - 1 1" + }, + { + "move": "Ndf2", + "fen": "N6N/8/8/4k3/8/3K4/5N2/NNN1NNNN b - - 1 1" + }, + { + "move": "Ndc3", + "fen": "N6N/8/8/4k3/8/2NK4/8/NNN1NNNN b - - 1 1" + }, + { + "move": "Nde3", + "fen": "N6N/8/8/4k3/8/3KN3/8/NNN1NNNN b - - 1 1" + }, + { + "move": "Nec2", + "fen": "N6N/8/8/4k3/8/3K4/2N5/NNNN1NNN b - - 1 1" + }, + { + "move": "Ng2", + "fen": "N6N/8/8/4k3/8/3K4/6N1/NNNN1NNN b - - 1 1" + }, + { + "move": "Nef3+", + "fen": "N6N/8/8/4k3/8/3K1N2/8/NNNN1NNN b - - 1 1" + }, + { + "move": "Nfd2", + "fen": "N6N/8/8/4k3/8/3K4/3N4/NNNNN1NN b - - 1 1" + }, + { + "move": "Nh2", + "fen": "N6N/8/8/4k3/8/3K4/7N/NNNNN1NN b - - 1 1" + }, + { + "move": "Nfe3", + "fen": "N6N/8/8/4k3/8/3KN3/8/NNNNN1NN b - - 1 1" + }, + { + "move": "Nfg3", + "fen": "N6N/8/8/4k3/8/3K2N1/8/NNNNN1NN b - - 1 1" + }, + { + "move": "Nge2", + "fen": "N6N/8/8/4k3/8/3K4/4N3/NNNNNN1N b - - 1 1" + }, + { + "move": "Ngf3+", + "fen": "N6N/8/8/4k3/8/3K1N2/8/NNNNNN1N b - - 1 1" + }, + { + "move": "Nh3", + "fen": "N6N/8/8/4k3/8/3K3N/8/NNNNNN1N b - - 1 1" + }, + { + "move": "Nhf2", + "fen": "N6N/8/8/4k3/8/3K4/5N2/NNNNNNN1 b - - 1 1" + }, + { + "move": "Nhg3", + "fen": "N6N/8/8/4k3/8/3K2N1/8/NNNNNNN1 b - - 1 1" + }, + { + "move": "Kc2", + "fen": "N6N/8/8/4k3/8/8/2K5/NNNNNNNN b - - 1 1" + }, + { + "move": "Kd2", + "fen": "N6N/8/8/4k3/8/8/3K4/NNNNNNNN b - - 1 1" + }, + { + "move": "Ke2", + "fen": "N6N/8/8/4k3/8/8/4K3/NNNNNNNN b - - 1 1" + }, + { + "move": "Kc3", + "fen": "N6N/8/8/4k3/8/2K5/8/NNNNNNNN b - - 1 1" + }, + { + "move": "Ke3", + "fen": "N6N/8/8/4k3/8/4K3/8/NNNNNNNN b - - 1 1" + }, + { + "move": "Kc4", + "fen": "N6N/8/8/4k3/2K5/8/8/NNNNNNNN b - - 1 1" + }, + { + "move": "Nb6", + "fen": "7N/8/1N6/4k3/8/3K4/8/NNNNNNNN b - - 1 1" + }, + { + "move": "Nc7", + "fen": "7N/2N5/8/4k3/8/3K4/8/NNNNNNNN b - - 1 1" + }, + { + "move": "Ng6+", + "fen": "N7/8/6N1/4k3/8/3K4/8/NNNNNNNN b - - 1 1" + }, + { + "move": "Nf7+", + "fen": "N7/5N2/8/4k3/8/3K4/8/NNNNNNNN b - - 1 1" + } + ] + }, + { + "description": "Transpose of N6N/8/8/4k3/8/3K4/8/NNNNNNNN w - - 0 1", + "start": { + "fen": "nnnnnnnn/8/3k4/8/4K3/8/8/n6n b - - 0 1", + "description": "Another position with the max number of black knights." + }, + "expected": [ + { + "move": "Nc2", + "fen": "nnnnnnnn/8/3k4/8/4K3/8/2n5/7n w - - 1 2" + }, + { + "move": "Nb3", + "fen": "nnnnnnnn/8/3k4/8/4K3/1n6/8/7n w - - 1 2" + }, + { + "move": "Nf2+", + "fen": "nnnnnnnn/8/3k4/8/4K3/8/5n2/n7 w - - 1 2" + }, + { + "move": "Ng3+", + "fen": "nnnnnnnn/8/3k4/8/4K3/6n1/8/n7 w - - 1 2" + }, + { + "move": "Kc5", + "fen": "nnnnnnnn/8/8/2k5/4K3/8/8/n6n w - - 1 2" + }, + { + "move": "Kc6", + "fen": "nnnnnnnn/8/2k5/8/4K3/8/8/n6n w - - 1 2" + }, + { + "move": "Ke6", + "fen": "nnnnnnnn/8/4k3/8/4K3/8/8/n6n w - - 1 2" + }, + { + "move": "Kc7", + "fen": "nnnnnnnn/2k5/8/8/4K3/8/8/n6n w - - 1 2" + }, + { + "move": "Kd7", + "fen": "nnnnnnnn/3k4/8/8/4K3/8/8/n6n w - - 1 2" + }, + { + "move": "Ke7", + "fen": "nnnnnnnn/4k3/8/8/4K3/8/8/n6n w - - 1 2" + }, + { + "move": "Nab6", + "fen": "1nnnnnnn/8/1n1k4/8/4K3/8/8/n6n w - - 1 2" + }, + { + "move": "Nac7", + "fen": "1nnnnnnn/2n5/3k4/8/4K3/8/8/n6n w - - 1 2" + }, + { + "move": "Na6", + "fen": "n1nnnnnn/8/n2k4/8/4K3/8/8/n6n w - - 1 2" + }, + { + "move": "Nbc6", + "fen": "n1nnnnnn/8/2nk4/8/4K3/8/8/n6n w - - 1 2" + }, + { + "move": "Nbd7", + "fen": "n1nnnnnn/3n4/3k4/8/4K3/8/8/n6n w - - 1 2" + }, + { + "move": "Ncb6", + "fen": "nn1nnnnn/8/1n1k4/8/4K3/8/8/n6n w - - 1 2" + }, + { + "move": "Na7", + "fen": "nn1nnnnn/n7/3k4/8/4K3/8/8/n6n w - - 1 2" + }, + { + "move": "Nce7", + "fen": "nn1nnnnn/4n3/3k4/8/4K3/8/8/n6n w - - 1 2" + }, + { + "move": "Ndc6", + "fen": "nnn1nnnn/8/2nk4/8/4K3/8/8/n6n w - - 1 2" + }, + { + "move": "Nde6", + "fen": "nnn1nnnn/8/3kn3/8/4K3/8/8/n6n w - - 1 2" + }, + { + "move": "Nb7", + "fen": "nnn1nnnn/1n6/3k4/8/4K3/8/8/n6n w - - 1 2" + }, + { + "move": "Ndf7", + "fen": "nnn1nnnn/5n2/3k4/8/4K3/8/8/n6n w - - 1 2" + }, + { + "move": "Nef6+", + "fen": "nnnn1nnn/8/3k1n2/8/4K3/8/8/n6n w - - 1 2" + }, + { + "move": "Nec7", + "fen": "nnnn1nnn/2n5/3k4/8/4K3/8/8/n6n w - - 1 2" + }, + { + "move": "Ng7", + "fen": "nnnn1nnn/6n1/3k4/8/4K3/8/8/n6n w - - 1 2" + }, + { + "move": "Nfe6", + "fen": "nnnnn1nn/8/3kn3/8/4K3/8/8/n6n w - - 1 2" + }, + { + "move": "Nfg6", + "fen": "nnnnn1nn/8/3k2n1/8/4K3/8/8/n6n w - - 1 2" + }, + { + "move": "Nfd7", + "fen": "nnnnn1nn/3n4/3k4/8/4K3/8/8/n6n w - - 1 2" + }, + { + "move": "Nh7", + "fen": "nnnnn1nn/7n/3k4/8/4K3/8/8/n6n w - - 1 2" + }, + { + "move": "Ngf6+", + "fen": "nnnnnn1n/8/3k1n2/8/4K3/8/8/n6n w - - 1 2" + }, + { + "move": "Nh6", + "fen": "nnnnnn1n/8/3k3n/8/4K3/8/8/n6n w - - 1 2" + }, + { + "move": "Nge7", + "fen": "nnnnnn1n/4n3/3k4/8/4K3/8/8/n6n w - - 1 2" + }, + { + "move": "Nhg6", + "fen": "nnnnnnn1/8/3k2n1/8/4K3/8/8/n6n w - - 1 2" + }, + { + "move": "Nhf7", + "fen": "nnnnnnn1/5n2/3k4/8/4K3/8/8/n6n w - - 1 2" + } + ] + }, + { + "start": { + "fen": "8/6kR/8/8/8/bq6/1rqqqqqq/K1nqnbrq b - - 0 1", + "description": "Maximal black queens." + }, + "expected": [ + { + "move": "Qcxh7", + "fen": "8/6kq/8/8/8/bq6/1r1qqqqq/K1nqnbrq w - - 0 2" + }, + { + "move": "Qhxh7", + "fen": "8/6kq/8/8/8/bq6/1rqqqqq1/K1nqnbrq w - - 0 2" + }, + { + "move": "Kf6", + "fen": "8/7R/5k2/8/8/bq6/1rqqqqqq/K1nqnbrq w - - 1 2" + }, + { + "move": "Kg6", + "fen": "8/7R/6k1/8/8/bq6/1rqqqqqq/K1nqnbrq w - - 1 2" + }, + { + "move": "Kxh7", + "fen": "8/7k/8/8/8/bq6/1rqqqqqq/K1nqnbrq w - - 0 2" + }, + { + "move": "Kf8", + "fen": "5k2/7R/8/8/8/bq6/1rqqqqqq/K1nqnbrq w - - 1 2" + }, + { + "move": "Kg8", + "fen": "6k1/7R/8/8/8/bq6/1rqqqqqq/K1nqnbrq w - - 1 2" + } + ] + }, + { + "description": "Transpose of 8/6kR/8/8/8/bq6/1rqqqqqq/K1nqnbrq b - - 0 1", + "start": { + "fen": "k1NQNBRQ/1RQQQQQQ/BQ6/8/8/8/6Kr/8 w - - 0 1", + "description": "Maximal white queens." + }, + "expected": [ + { + "move": "Kf1", + "fen": "k1NQNBRQ/1RQQQQQQ/BQ6/8/8/8/7r/5K2 b - - 1 1" + }, + { + "move": "Kg1", + "fen": "k1NQNBRQ/1RQQQQQQ/BQ6/8/8/8/7r/6K1 b - - 1 1" + }, + { + "move": "Kxh2", + "fen": "k1NQNBRQ/1RQQQQQQ/BQ6/8/8/8/7K/8 b - - 0 1" + }, + { + "move": "Kf3", + "fen": "k1NQNBRQ/1RQQQQQQ/BQ6/8/8/5K2/7r/8 b - - 1 1" + }, + { + "move": "Kg3", + "fen": "k1NQNBRQ/1RQQQQQQ/BQ6/8/8/6K1/7r/8 b - - 1 1" + }, + { + "move": "Qcxh2", + "fen": "k1NQNBRQ/1R1QQQQQ/BQ6/8/8/8/6KQ/8 b - - 0 1" + }, + { + "move": "Qhxh2", + "fen": "k1NQNBRQ/1RQQQQQ1/BQ6/8/8/8/6KQ/8 b - - 0 1" + } + ] + } + ] +} \ No newline at end of file