par nodgim » 30 Mai 2008, 17:38
Petite analyse du problème:
Une combinaison est gagnante quand le joueur peut ôter un rectangle tel que le résultat sera une combinaison perdante (pour l'adversaire). Inversement, une combinaison est perdante quand aucun rectangle ôté ne mène à une combinaison perdante, c'est à dire que n'importe quelle action mène à une combinaison gagnante (pour l'adversaire).
Comment trouver les combinaisons perdantes ?
Partir de 1, ajouter des carrés (1*1) et analyser.
On peut numériser les combinaisons en comptant par exemple le nombre de carrés dans chaque colonne, en partant du dernier carré.
Exemple: 421 est la combinaison avec 4 carrés dans la 1ère colonne, 2 dans la seconde et 1 dans la 3ème.
Liste des combinaisons perdantes pour un rectangle initial de 3*9:
1, 21, 32(221), 43, 54, 65, 76, 87, 98, 311, 422, 532, 553, 633, 642, 743, 752, 775, 844, 862, 954, 965, 972, 996.
En jouant sur le site indiqué par ffpower, on se rend compte que la machine joue bien ces codes pour gagner. Apparemment, le règlage du tableau à 9*3 ne marche pas, sinon j'aurais pu vérifier que je pouvais battre la machine à tous les coups.
Qui veut gagner peut chercher les codes pour un rectangle 10*6, c'est un peu long mais on peut le trouver.
Je n'ai pas trouvé un algorithme permettant de déduire les nombres perdants, puisque c'est un peu la même chose que la recherche des nombres premiers.
Pour vérifier qu'un rectangle de départ est toujours gagnant, il faut montrer qu'il existe toujours un nombre perdant de la forme aaaa...bbb.., c'est à dire avec seulement 2 nombres. Ce que je n'ai pas su faire.