I challenge you to a game. we each get one penny and we flip them at the same time. (so on turn 1, we each flip our respective pennies – turn 2, we flip them again, and so on until someone wins). I am looking to get heads then tails. You are looking to get heads then heads. So if you flip heads on any flip and then heads on the next flip, you win. If I flip heads on any flip and then tails on the next flip, I win. (its not a speed race, we both flip at the same time, except i’m only concerned with what appears on my coin, and you are only concerned with whats on your coin). Are the odds fair? (obviously not, otherwise this wouldn’t be a question). who has the advantage and why?
Solution
(ummm„ I don’t right too good. 😉 )
In a 3 turn game:
O needs HH, X needs HT
HHH O
HHT OX
HTH X
HTT X
THH O
THT X
TTH
TTT
X wins 4 times out of 8, O wins 3 times out of 8
Its because in the event X loses there is a 50% chance of starting out on another H where O has to start on a T 75% of the time. (or something like that…)
2026 Update: Game Theory and Winning Strategies
Penny-placement game theory puzzles — where the first player wins by placing at center and mirroring — illustrate strategy stealing, a proof technique that shows a winning strategy exists without constructing it explicitly. This technique is used in combinatorial game theory and is directly related to alpha-beta pruning in game-playing AI.
The symmetry strategy: Place the first coin at center. For every coin your opponent places, place yours at the point symmetric to the center. Since the board is symmetric and you always have a valid response, your opponent runs out of moves first.
Generalized: Nim and Sprague-Grundy theory (2026 interviews):
def nim_winner(piles):
"""
Determine Nim winner with optimal play.
Key insight: XOR (nim-sum) of all pile sizes.
First player wins iff nim-sum != 0.
"""
nim_sum = 0
for pile in piles:
nim_sum ^= pile
return "First" if nim_sum != 0 else "Second"
# Classic Nim
print(nim_winner([3, 4, 5])) # First player wins (3^4^5 = 2)
print(nim_winner([1, 2, 3])) # Second player wins (1^2^3 = 0)
Still asked at (2026): Jane Street, Two Sigma (combinatorial game theory in screening), Google DeepMind (for game-playing AI research roles), and quantitative trading firms.