One other possibility in the second weighing you switch one heavy for the other heavy one light for the other light so the weights are the same in the second weighing, so you can’t deconvolute which is heavy and which is light. Thought I had it! So here is the solution I think works.
On first weigh, weigh one blue and one white on one side, one red and one blue on the other. If one side is heavier, the blue ball must be the heavier one on that side. the red and white balls can either be the same weight (both light or both heavy) or the red and white could be different (heavy on the heavy blue side and light on the light blue side). On the second weigh (let’s say the red ball was on the heavy side but it is equally valid if it is white one), switch the red ball with the unweighed one, and weigh against the white ball from the first round. Three possibilities occur:
- The red weighs less than the white. This means you switched from the heavy red ball from the first round, which is consistent with the first round being heavier and the original red and white balls weighing the same (heavy).
- The red weighs more than the white. This means you switched from the light red ball from the first round, which is consistent with the first round being heavier and the original red and white balls weighing the same (light).
- The red weighs the same as the white. This means you switched a heavy red ball for a light one, and this is consistent with case 3 in the first weigh where the heavy red ball is on the same side as a heavy blue ball, and the opposite side had a light white ball and light blue ball.
Obviously I am saying that the red ball was on the heavy side in this case, but the logic holds if it was the white ball instead.
If the weights on the first weigh are the same, you know that one of the red/ white balls are heavy and the other is light. Switch the blue balls as you now have to have two heavy balls on one side and two light on the other, and you know all the weights! Pretty sure I got it for real this time!