1

The King has 1000 bottles of wine, exactly one of which is poisoned. Your job is to identify and throw out the poisoned bottle as quickly as possible by having the royal taste-testers drink the wines. Since the poison takes a little while to take effect, quickly means that the taste-testers only have the time to take a single drink—so you can’t have a single taste-tester go through the wines one by one. On the other hand, you can mix the wines in arbitrary ways before handing them out. What is the fewest number of taste-testers needed to identify the poisoned wine, and why?

I cannot figure out where to start

Sputnik
  • 3,917
Linux27
  • 19
  • 2
    Start by thinking about how you would do it for a smaller number of bottles. Can you find the best strategy for 3 bottles? – Michael Biro Mar 01 '20 at 05:21
  • @MichaelBiro unfortunately 3 is a bad choice to devise a strategy. One might not start on the correct path. For 3 bottles, you need two testers. But one might choose the following algorithm, which does not scale too well: tester 1 drinks from bottle 1, tester 2 from bottle 2. If one dies, you found the bottle. If no one dies, the third bottle is poisoned. – Andrei Mar 01 '20 at 05:51
  • 4
    The fact that each taster lives or dies might make you think about binary numbers. Express each bottle number in binary..... – Ross Millikan Mar 01 '20 at 06:11
  • 1

1 Answers1

4

As mentioned in the comments, you should use binary representation of numbers. Let's start with fewer bottles, say $6$. We can write the binary numbers for the labels as $001$, $010$, $011$, $100$, $101$, $110$. Now let's assign a tester for each bit. For example, tester 1 will check the last bit, tester 2 will check the next to last and so on. What does it mean to check the bit? In this case, prepare a drink for tester 1 that contains a mixture of all the drinks where the last digit in the label is $1$. For tester 2, the mixture contains all the wines where the digit next to last is $1$. And so on. $$\begin{array}{c|c|c|c|c} Nr&Label& Tester\ 3 & Tester\ 2 & Tester\ 1 \\ \hline 1& 001& 0&0 &1\\ \hline 2& 010& 0 &1 &0\\ \hline 3& 011& 0 &1 &1\\\hline 4& 100&1&0&0\\\hline 5& 101&1&0&1\\\hline 6& 110&1&1&0 \end{array}$$

You can see now that if a tester detects poison, the label must have the corresponding digit equal to $1$. If a tester does not detect poison, the corresponding digit on the label is $0$. Then you just need to see which tester detects the poison. For example, if tester 1 and 3 detect poison, the bottle with the problem is number 5.

To get more bottles just extend the numbers of testers. Show that you need 10 for 1000 bottles.

Andrei
  • 40,527