"A" definitivamente no puede ver nada, al igual que "B", así que depende de los otros dos.

"D" puede ver que hay dos frente suyo, y si estira un poquito el cuello, puede ver el color de ambos gorros, pero sabe que hay 4 en total, con 2 gorros negros y 2 blancos. Ve uno de cada color, así que no está seguro de qué color sea. Si viera dos iguales frente suyo, obviamente sería el color opuesto. Pero no es así, así que se queda callado.

Mientras tanto, "C" sólo puede ver un color frente suyo (blanco), e inicialmente no está seguro de su color. Pero el tiempo pasa, y se da cuenta que si el de atrás (D), hubiera visto a dos del mismo color, hubiera gritado hace rato su color. Pero no es así, y ya pasaron dos minutos.

Después de tanto tiempo, se da cuenta de que si "D" no está seguro, entonces debe estar viendo uno de cada color, así que no puede adivinar.

C, al ver un color blanco frente suyo, y al ver la inseguridad de D, grita el suyo...

Genial, no?