I found an approach to this on another website. Instead of thinking up complex strategies, make a code for each ball which will reveal if it is the one you are looking for.

So... suppose just two weighings are needed. If ball 1, say, is in the left hand pan for the first weighing and the right hand pan for the second weighing: code it LR. Then if you see the left pan fall, then the right, you know the heavy one is ball 1... unless another ball has the same code!

You can also leave a ball out of one or both of the weighings. Denote this x.

You need to make different codes for all the balls. But you also need to make sure that there are equal numbers on each side in both the weighings.

Here are codes that fulfil these requirements:

1. Lx
2. Rx
3. xL
4. xR
5. LR
6. RL
7. LL
8. RR

To spell it out: the first weighing is (left pan) 1,5,7 versus (right pan) 2,6,8. The second weighing is (left pan) 3,6,7 versus (right pan) 4,5,8

I found an approach to this on another website. Instead of thinking up complex strategies, make a code for each ball which will reveal if it is the one you are looking for.

So... suppose just two weighings are needed. If ball 1, say, is in the left hand pan for the first weighing and the right hand pan for the second weighing: code it LR. Then if you see the left pan fall, then the right, you know the heavy one is ball 1... unless another ball has the same code!

You can also leave a ball out of one or both of the weighings. Denote this x.

You need to make different codes for all the balls. But you also need to make sure that there are equal numbers on each side in both the weighings.

Here are codes that fulfil these requirements:

1. Lx

2. Rx

3. xL

4. xR

5. LR

6. RL

7. LL

8. RR

To spell it out: the first weighing is (left pan) 1,5,7 versus (right pan) 2,6,8. The second weighing is (left pan) 3,6,7 versus (right pan) 4,5,8