INKWIRE(7) reasoning puzzles INKWIRE(7)
poisoned-wine
One Thousand Bottles
Ten prisoners, twenty-four hours, one poisoned bottle.
NAME
Problem
A banquet needs 1,000 bottles of wine. Exactly one bottle has been poisoned. The poison is silent: it produces no symptoms until it kills, and it kills exactly 24 hours after the fatal sip.
You have ten prisoners willing to take part and a single 24-hour window. Nobody may be given a second dose and there is no time for a second round of testing. You need to identify the poisoned bottle with certainty.
The obvious plan uses 999 prisoners and fails the constraint. The workable plan uses ten, and it works because the answer does not have to be read off one prisoner at a time.
SIGNALS
Conditions and what each one forces
| # | Condition | What it forces |
|---|---|---|
| 1 | Exactly one poisoned bottle in 1,000 | The answer is a single index in 1..1000, which needs 10 bits to encode (2^10 = 1024 ≥ 1000) |
| 2 | Poison kills exactly 24 hours after ingestion | All tasting must happen at one moment; there can be no sequencing of rounds within the window |
| 3 | Ten prisoners available | Ten independent yes/no outcomes give 2^10 = 1024 distinguishable patterns, just enough |
| 4 | A prisoner may drink from many bottles | Mixing is allowed, so a prisoner can represent one bit of the bottle's index by drinking from every bottle whose bit is 1 |
| 5 | Death is unambiguous and observed at the 24-hour mark | The set of dead prisoners spells the index directly in binary, no further inference required |
EXAMPLES
Method
Give each taster one bit. The set of who dies is not a clue to be interpreted — it is the answer, written in the only alphabet ten prisoners can supply.
[+] Worked solution 4
Number the bottles 0 to 999 and write each number in binary using ten digits. Bottle 237 is 0011101101.
Assign one prisoner to each bit position. Prisoner 1 is the 512s place, prisoner 2 the 256s place, and so on down to prisoner 10, the 1s place. For every bottle, each prisoner whose bit position holds a 1 in that bottle's number takes a sip from it. Bottle 237 goes to prisoners 3, 4, 5, 7, 8 and 10.
Wait 24 hours. Read the deaths as a binary number: a dead prisoner is 1 and a survivor is 0. If prisoners 3, 4, 5, 7, 8 and 10 die and the rest live, the pattern is 0011101101, and the poisoned bottle is 237.
The scheme is exact because the mapping from bottle index to death pattern is the binary representation itself, and every bottle produces a distinct pattern. It also needs only 1,000 of the 1,024 available patterns, so bottle numbers 1000 to 1023 are simply never used.
Kindred entries
- [P] twelve-coin One coin is counterfeit and you do not know if it is heavy or light.
- [P] bridge-and-torch Four people, one torch, seventeen minutes.
- index — /t/puzzle/
[+] Notes and objections 3
- Why exactly ten prisoners and not nine?
- Nine prisoners give 2^9 = 512 patterns, fewer than the 1,000 bottles. Ten give 1,024, which covers the range with 24 patterns to spare. The number of prisoners is the number of binary digits required.
- What if two bottles were poisoned?
- The binary scheme breaks down because the death pattern would be the bitwise OR of two indices and cannot be separated. You would need a different code — several error-correcting or combinatorial designs exist, and they all require more prisoners or more rounds.
- Does a prisoner die faster if they drink more poison?
- The puzzle assumes the dose is irrelevant to timing. If the poison were dose-dependent, the scheme would still work, because every taster drinks the same number of sips on average and the timing is the same 24 hours.
Scope — Puzzle presented for practice; the encoding above is a standard illustration of information bounds.