The rules page names the texts it follows: the Copenhagen club's rules and Linnaeus's manuscript in Salmi's reading; perpetual repetition loses for the defenders, as Copenhagen has it

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Jm2auWk6RP71CjaAb4FMoG
This commit is contained in:
Eric Wagoner
2026-09-23 13:51:25 -04:00
co-authored by Claude Fable 5.1
parent 32844a5976
commit 3aeb1ee99e
3 changed files with 40 additions and 40 deletions
+2 -2
View File
@@ -264,9 +264,9 @@ export function applyMove(previous: State, from: number, to: number): State {
if (!state.over) {
const key = positionKey(state);
state.seen[key] = (state.seen[key] ?? 0) + 1;
const mover = state.players[seatOfSide(state, side)!]?.name ?? side;
const next = state.players[seatOfSide(state, state.toMove)!]?.name ?? state.toMove;
if (state.seen[key] >= 3) win(state.toMove, `${mover} repeats the position a third time and forfeits.`);
// Perpetual repetition is forbidden, and the Copenhagen rule lays the loss on the defenders.
if (state.seen[key] >= 3) win('attackers', 'The position stands a third time: perpetual repetition loses for the defenders.');
else if (legalMoves(state, state.toMove).length === 0) win(side, `${next} has no move.`);
}
return state;