Take one or two stonesComplete backward classification · 13 states
The problem
Classify each heap size and certify a winning strategy under optimal normal play.
The checked result
Winning heap sizes: [1, 2, 4, 5, 7, 8, 10, 11].
Every winning state has a legal move to a losing state. A losing state has no such move, so the opponent controls the next winning position.
Why the checker accepts it
- Set the empty heap to losing.
- Process heap sizes in increasing order.
- Mark a heap winning if an allowed subtraction reaches a losing heap.
- Validate every submitted winning move and every losing-state marker.
Formal specification
{
"moves": [
1,
2
],
"max_heap": 12,
"terminal_rule": "A player unable to move loses; no draws; perfect information."
}Claim and evidence
{
"claim": {
"winning_positions": [
1,
2,
4,
5,
7,
8,
10,
11
]
},
"witness": {
"strategy": [
null,
1,
2,
null,
1,
2,
null,
1,
2,
null,
1,
2,
null
]
}
}Dataset construction
Deterministic finite fixture; full enumeration or witness replay as stated. Structured JSON; field meanings are stated in the specification. Acceptance covers 13 checker units for this record; the unit type is stated in its verification scope.
Complexity and limits
N heap sizes with m allowed moves require O(Nm) dynamic-programming checks.
These are finite impartial subtraction games, not equilibrium analyses of simultaneous or imperfect-information games.
A boundary to investigate
A single successful play does not establish a strategy against all opponent choices. Add alternating-player reachability graphs and strategy certificates.