./71 > comme a dit dualmoo, ces deux scénarios n'ont qu'un nombre fini de différences donc la même stratégie exactement est appliquée dans les deux cas.
En fait peut-être que tu comprendras plus facilement si on commence par considérer des cas simples ; moi par exemple quand j'ai lu le problème j'ai commencé par me demander si on ne pouvait pas distinguer des cas, et je me suis dit :
ben déjà, s'il n'y a qu'un nombre fini de chapeaux bleus, alors 1/ tout le monde le sait (parce que s'il y a un nombre fini de chapeaux bleus à part moi, alors si j'ai un chapeau bleu aussi ça n'en fait jamais qu'un de plus, donc le nombre reste fini), et 2/ chacun, étant au courant de cette situation, peut dire qu'il a un chapeau rouge, et le nombre d'erreurs sera fini puisque ce sera le nombre de chapeaux bleus.
Idem s'il n'y a qu'un nombre fini de chapeaux rouges.
(Donc en fait à la réflexion j'avais presque trouvé la méthode, mais bon j'ai pas pensé à continuer : après je me suis dit : bon, ben donc il reste le troisième cas, celui avec une infinité de chapeaux de chaque ^^.) Mais en fait le truc c'est de ne pas s'arrêter en si bon chemin et de continuer à distinguer des cas de la même façon, tous les cas possibles (ce qui fait une énorme infinité), genre : tous les bonshommes pairs ont un chapeau bleu et tous les bonshommes impairs en ont un rouge, sauf un nombre fini... ça marche exactement pareil, si on est dans cette situation tout le monde est en mesure de le constater, et donc chacun peut répondre "bleu" s'il est pair et "rouge" s'il est impair, et il n'y aura qu'un nombre fini d'erreurs.
./78 > ben qu'est-ce que ça change ? le truc c'est qu'il y a une quantité invraisemblablement énorme de cas à avoir préalablement distingués, mais si tu supposes qu'ils en sont capables, ça marche toujours...