Problem
You and I are to play a competitive game. We shall take it in turns to call out integers. The first person to call out 50 wins. The rules are as follows:
- The player who starts must call out an integer between 1 and 10, inclusive;
- A new number called out must exceed the most recent number called by at least one and by no more than 10. For example, if the first player calls out 9, then the range of valid numbers for the opponent is 10 to 19, inclusive.
Do you want to go first, and if so, what is your strategy?
Solution
Boundary conditions and invariants
Let the calls be C_i, i = 1, 2, 3, ..., w, where C_w is the winning call. Based on the given information:
- Starting condition: 1\leq C_1 \leq10, which is the first call.
- Invariant condition: C_{i-1} + 1 \leq C_i \leq C_{i-1} + 10 \implies 1 \leq C_i - C_{i-1} \leq 10, which is the range of difference between two consecutive calls.
- Termination condition: C_w = 50, which is the last and the winning call.
Applying the invariant on the termination condition, we can say that the call just before the winning call must be 40\leq C_{w-1} \leq49. In other words, for a person to win, the opponent must select an integer from the set [40, 49] in the penultimate call.
It also implies that to win, it is sufficient to select C_{w-2} = 39 in the call before that, i.e., the first person to select 39 can win the game irrespective of the opponent’s next selection. For example, if I am at 39 and the opponent selects 39+8=47, then I can select 47+3=50. It can be easily verified that for all possible selections available to the opponent in the penultimate round, I can win by selecting 50 in the last call.
We can extend the same argument for all previous calls, and finally reach the beginning of the game. The basic strategy here is to assume that I win and calculate back to the beginning of the game, while forcing the opponent to select integers from ranges that favor my desired selections.
Strategy Verification
As shown in the following table, the key insight is that by starting with 6 and always ensuring my calls follow the pattern 6, 17, 28, 39, 50 (adding 11 each time), I force my opponent into ranges where they cannot prevent me from reaching the next target number. This backward induction approach guarantees victory for the first player when following this strategy.
Person | Call from end (win) | Call count from start | Value or range |
---|---|---|---|
me | C_w | C_9 | 50 |
opponent | C_{w-1} | C_8 | [40, 49] |
me | C_{w-2} | C_7 | 39 |
opponent | C_{w-3} | C_6 | [29, 38] |
me | C_{w-4} | C_5 | 28 |
opponent | C_{w-5} | C_4 | [18, 27] |
me | C_{w-6} | C_3 | 17 |
opponent | C_{w-7} | C_2 | [7, 16] |
me | C_{w-8} | C_1 | 6 |
Conclusion
The winning strategy is to start first and select 6, while continuing to add 11 to my own previously selected integer, till I reach 50.
Citation
@online{sarkar2025,
author = {Sarkar, Souvik},
title = {First to Call 50},
date = {2025-06-30},
url = {https://sounix000.github.io/blog/posts/first-to-call-50/},
langid = {en}
}