Hi
By the rules, when having played 49 moves without capture or pawn move, and there is a possible further move without capture or pawn move, the player on the move can request the draw. But the can_claim_fifty_moves method returns false after 49 moves without capture or pawn move.
For the threefold repetition, the right to claim one move before the threefold repetition could occur is implemented. So the behaviour of the fifty move rule looks like a bug.
See the attached script and PGN's:
For "example_ending_with_fifty_moves_without_capture_and_pawn_move.pgn" the output is:
After 55...Bg5 can claim threefold = False, can claim fifty = False
After 56.Bc1 can claim threefold = False, can claim fifty = False
After 56...Nd6 can claim threefold = False, can claim fifty = True
The expected output is:
After 55...Bg5 can claim threefold = False, can claim fifty = False
After 56.Bc1 can claim threefold = False, can claim fifty = True
After 56...Nd6 can claim threefold = False, can claim fifty = True
For "example_ending_with_threefold_repetition.pgn" the output is as expected:
After 3...Nf6 can claim threefold = False, can claim fifty = False
After 4.Ng1 can claim threefold = True, can claim fifty = False
After 4...Ng8 can claim threefold = True, can claim fifty = False
example_ending_with_fifty_moves_without_capture_and_pawn_move.pgn.txt
example_ending_with_threefold_repetition.pgn.txt
test_can_claim.py.txt
Please have a look.
Hi
By the rules, when having played 49 moves without capture or pawn move, and there is a possible further move without capture or pawn move, the player on the move can request the draw. But the can_claim_fifty_moves method returns false after 49 moves without capture or pawn move.
For the threefold repetition, the right to claim one move before the threefold repetition could occur is implemented. So the behaviour of the fifty move rule looks like a bug.
See the attached script and PGN's:
For "example_ending_with_fifty_moves_without_capture_and_pawn_move.pgn" the output is:
After 55...Bg5 can claim threefold = False, can claim fifty = False
After 56.Bc1 can claim threefold = False, can claim fifty = False
After 56...Nd6 can claim threefold = False, can claim fifty = True
The expected output is:
After 55...Bg5 can claim threefold = False, can claim fifty = False
After 56.Bc1 can claim threefold = False, can claim fifty = True
After 56...Nd6 can claim threefold = False, can claim fifty = True
For "example_ending_with_threefold_repetition.pgn" the output is as expected:
After 3...Nf6 can claim threefold = False, can claim fifty = False
After 4.Ng1 can claim threefold = True, can claim fifty = False
After 4...Ng8 can claim threefold = True, can claim fifty = False
example_ending_with_fifty_moves_without_capture_and_pawn_move.pgn.txt
example_ending_with_threefold_repetition.pgn.txt
test_can_claim.py.txt
Please have a look.