È un problema di logica autoreferenziale.

B e/o D mentono; le loro affermazioni sono contraddittorie.

Supponiamo che B mente e D dice la verità. Tutti i 5 ragazzi devono avere cappellini rossi. Ma B mente e deve averlo bianco. Una contraddizione

Se ora B dice la verità vede 4 cappellini bianchi e allora tutti gli altri mentono. Ma C dice la verità affermando di vedere 3 cappellini bianchi (A, D, E) e uno rosso (B). Ma deve avere un cappellino bianco. Una contraddizione.

Allora deve essere che sia B che D mentono e hanno i cappellini bianchi.

Ma anche A deve mentire perchè dice di vedere tre cappellini rossi. Al massimo ne può vedere due perchè B e D l'hanno bianco.

C vede tre cappellini bianchi; saranno A, B e D. Se C dice la verità lui ed E hanno cappellini rossi. Se C mente ha il cappellino bianco ma anche E deve averlo bianco perchè C dichiara di vedere un solo cappellino rosso e non dice il vero. Certo può accadere che tutti abbiano cappellini bianchi. Ma in questo caso B dice la verità e invece B è accertato che mente.

L'unica possibilità senza creare contraddizione è che A, B e D hanno i cappellini bianchi e C ed E i cappellini rossi.