Salut à tous,
Voilà je suis en seconde année de prépa maths et dans le cadre de mon TIPE j'essaie de réaliser un algorithme permettant de jouer au jeu de Hex et de déterminer une stratégie gagnante.
Donc évidemment comme dans tout programme j'ai déjà eu pas mal de problèmes que j'ai réussi à surmonter jusque là, mais ici j'ai vraiment du mal à voir ce qui cloche, donc si certains s'y connaissent un peu en langage Maple, voici l'algorithme en question qui bloque:
trier:=proc(n)
local A,V,D,k ;
A:=generer(n^2) ;
W:=NULL ;
L:=NULL ;
for k from 1 to combinaison(floor((n^2)/2),(n^2)) do
if Vainqueur(A[k],n) then V:=V,A[K] ;
else D:=D,A[k] ;
fi;
od;
[W],[L];
end proc;
Alors un peu d'explications quand même:
Le but de ce programme est une fois qu'on a toutes les possibilités de remplissage d'une matrice n*n au jeu de Hex, de déterminer lesquelles sont gagnantes (pour le joueur qui joue en premier) et lesquelles sont perdantes.
Le programme "combinaison" (dans la boucle for k...) renvoie la taille de la matrice A qui contient toutes les possibilités sous forme de vecteur. Cette taille est définie de la même manière dans le programme "générer" qui fonctionne parfaitement, donc je ne pense pas qu'il y ait de problème à ce niveau là.
Et le programme "Vainqueur" teste une possibilité et renvoie true ou false pour dire si elle est gagnante ou perdante. Là aussi j'ai testé ce programme plein de fois et même si j'ai du le corriger à plusieurs reprises, cette fois ci je suis à peu près sur qu'il fonctionne correctement.
Bref en fait c'est pas un algorithme très compliqué je trouve, sauf que par exemple même en testant sur un cas extrêmement simple (sur un échiquier 1*1 : le premier joueur pose son pion et a gagné), voici ce que Maple me répond:
debug(trier);trier(1);
trier
{--> enter trier, args = 1
A := [[0]]
W :=
L :=
<-- ERROR in trier (now at top level) = bad index into %1}
Error, (in trier) bad index into Array
(et j'ai la même réponse sur des échiquiers plus grand)
Et en fait même en me renseignant sur internet je suis pas sûr d'avoir compris ce que le message "bad index into array" signifiait, donc là je vois absolument pas ce qui bloque, si ça se trouve c'est un truc très con.
Du coup si quelqu'un voit où est le problème et pouvait m'aider, ce serait super sympa merci beaucoup!
J'ai essayé d'être le plus précis possible dans les indications que j'ai donné pour comprendre l'algorithme, mais si vous pensez que je ne l'ai pas été assez, vous pouvez me demander d'autres précisions évidemment.