summaryrefslogtreecommitdiff
path: root/src/claude-player.rs
diff options
context:
space:
mode:
authorDylan <boss@tehbox.org>2026-11-09 16:17:04 +1300
committerDylan <boss@tehbox.org>2026-11-09 16:17:04 +1300
commit0fd43eb6d9a4bae8d4c29fd614f9cf2a362f7b7c (patch)
treeeb926ba3fbc0dcde9717509e9fa02cc79a3679f9 /src/claude-player.rs
parent046969c820e89b74d55c2d07c47470237f11cc2a (diff)
downloadtigers-and-sheep-0fd43eb6d9a4bae8d4c29fd614f9cf2a362f7b7c.tar.gz
tigers-and-sheep-0fd43eb6d9a4bae8d4c29fd614f9cf2a362f7b7c.zip
feat: Draw by threefold repetition
A position coming up for the third time with the same side to move ends the game as a draw, in the TUI and in training self-play. Players now get the game's earlier boards in pick_move, and the search scores the first repetition on its path as a draw, so a side that is ahead avoids one and a side that is behind seeks one. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Diffstat (limited to 'src/claude-player.rs')
-rw-r--r--src/claude-player.rs4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/claude-player.rs b/src/claude-player.rs
index c25c5e1..2b7004c 100644
--- a/src/claude-player.rs
+++ b/src/claude-player.rs
@@ -92,12 +92,12 @@ mod tests
fn pick_move_reports_its_search()
{
let mut player = ClaudePlayer::new(Duration::from_millis(50));
- let m = player.pick_move(GameBoard::default(), Turn::Tiger).unwrap();
+ let m = player.pick_move(GameBoard::default(), Turn::Tiger, &[]).unwrap();
let report = player.last_search.expect("a report");
assert_eq!(report.mv, m);
assert!(report.depth >= 1);
assert_eq!(report.score, player.minimax(GameBoard::default(), Turn::Tiger, report.depth,
- f32::NEG_INFINITY, f32::INFINITY, None).unwrap());
+ f32::NEG_INFINITY, f32::INFINITY, None, &mut Vec::new()).unwrap());
player.reset();
assert_eq!(player.last_search, None);