On a q questions et un message de m bits (q=23, m=12 dans notre cas).On pourra donc générer 2^m messages différents, ce qui n’est pas assez pour représenter toutes les 2^q réponses possibles tant que m<q (12<23).Cela dit, si on est prêt à tolérer e erreurs, on pourra utiliser le même message pour couvrir plusieurs réponses d’un coup.Pour e erreurs, chaque réponse est couverte par sum{i=0 à e}{C(q, i)} messages différents.Par exemple, pour q=4, la réponse 0000 est couverte par:e=0 -> 0000 (total=C(4,0)=1)e=1 -> 0000 1000 0100 0010 0001 (total=1+C(4,1)=5)e=2 -> 0000 1000 0100 0010 0001 1100 1010 1001 0110 0011 0101 (total=5+C(4,2)=11)e=3 -> 0000 1000 0100 0010 0001 1100 1010 1001 0110 0011 0101 1110 1101 1011 0111 (total=11+C(4,3)=15)e=4 -> 0000 1000 0100 0010 0001 1100 1010 1001 0110 0011 0101 1110 1101 1011 0111 1111 (total=15+C(4,4)=16)On s’attend bien sûr à retrouver 2^4=16 pour le cas e=4 (peu importe le message de 4 bits, on n’aura pas plus de 4 erreurs).Vu la symétrie du problème, il est clair que ces messages sont distribués équitablement à travers les 2^q réponses possibles.Du coup, pour chaque nombre d'erreurs e, il nous suffit de multiplier le nombre ci-dessus par le nombre de messages que nous pouvons utiliser (2^m),pour savoir combien de messages on couvrera. Si ce nombre atteint ou dépasse 2^q, on peut garantir le nombre d’erreurs correspondant.En d'autres mots, on peut supporter e erreurs si l’inégalité suivante est satisfaite:sum{i=0 à e}{C(q, i)} * 2^m >= 2^q(Points bonus si quelqu’un arrive à écrire tout ça sous la forme e = ... au lieu d’utiliser une inégalité et de tester les “e” un par un).Dans l’exemple ci-dessus:e=0 -> on a besoin de m=4e=1 -> on a besoin de m=2e=2 -> on a besoin de m=1e=3 -> on a besoin de m=0On peut d’ailleurs confirmer l’exemple de harvey: q=7 e=1 -> m=4Maintenant pour la question initialement posée, on trouve: q=23 m=12 -> e=3q-e = 20 questions garanties.