Page 1 of 1

Problème avec N-Queen

Unread postPosted: 06 Jul 2021, 00:34
by absolem
En regardant:
https://www.youtube.com/watch?v=MnXlh1S1usM
, le youtuber présent un petit programme qu'il utilise pour comparer les performances entre les calculatrices...

Il donne même la source du petit programme pour toutes les calculatrices de toute marque confondue...
https://www.hpmuseum.org/cgi-sys/cgiwra ... i?read=700

Je trouve le sujet intéressent et je copie le dit programme dans ma ti-200,
Petit problème; quand je l'exécute la calculatrice me donne un message : Dimension ...

Quelqu'un a une idée... Merci !

Image

Code: Select all
queen()
Prgm
   Local a,n,r,s,t,x,y
    8→r
   newlist(r)→a
   For n,1,10
     0→s
     0→x
     Loop
       x+1→x
       r→a[x]
       Loop
         s+1→s
         x→y
         While y>1
           y-1→y
           a[x]-a[y]→t
           If t=0 or x-y=abs(t) Then
             0→y
             a[x]-1→a[x]
             While a[x]=0
               x-1→x
               a[x]-1→a[x]
             EndWhile
           EndIf
         EndWhile
         If y=1
           Exit
       EndLoop
       If x=r
         Exit
     EndLoop
   EndFor
   Disp s
EndPrgm

Re: Problème avec N-Queen

Unread postPosted: 06 Jul 2021, 09:13
by Bisam
Il ne semble y avoir aucun problème dans ce programme. Il est probable que tu aies simplement mal copié. En particulier, il devrait commencer par un Define queen()=Prgm.
On peut même facilement l'améliorer en enlevant la ligne 8→r et remplacer la ligne Local a,n,r,s,t,x,y par Local a,n,s,t,x,y et enfin ajouter r en paramètre dans la définition Define queen(r)=Prgm.
Ainsi, on peut avoir le nombre de solutions en fonction de la taille r du plateau.


Peux-tu envoyer une photo ou capture d'écran du début de ton programme ou encore de l'endroit où te renvoie l'erreur lorsque tu cliques sur
Enter
?

Re: Problème avec N-Queen

Unread postPosted: 16 Aug 2021, 16:37
by rentech7289
Bonjour,
Après vérification, les instructions sont exactes. Le problème est l'indentation qui n'est pas la même mais ne devrait pas poser de problème s'agissant de TI-basic. Ici Define ne sert à rien, il s'agit d'une capture de l'éditeur de programme. Par contre, il y a un problème avec la liste des calculatrices concernées, copier-collé depuis le lien indiqué:
TI-89, TI-89 Titanium, TI-92+, TI-Nspire, TI-Nspire CAS, TI-Nspire CX II CAS
Pas de Voyage 200! Ici, le message d'erreur (errornum = 230 sur TI-92) fait penser à un dépassement de l'indice d'une matrice. Appuyer sur enter envoie directement à la ligne de l'erreur; ça pourrait aider, mais j'ai un doute à cause de la liste...

Re: Problème avec N-Queen

Unread postPosted: 02 Mar 2022, 11:19
by NiTROGEN
absolem wrote:
Code: Select all
queen()

[...]

             While a[x]=0
               x-1→x
               a[x]-1→a[x]
             EndWhile
   [...]





J'ai juste parcouru quelques secondes le code et il faudrait vérifier que l'on ne fasse pas des tests avec un indice qui vaut 0 à certains moments qui renverrait alors une erreur de dimension. Vu l'erreur c'est qu'à un moment il y a un test sur un indice < 1 ou > r obviously.

Dans la partie au-dessus, par exemple si a[1] vaut 0 (je ne sais pas si c'est possible) ça plante car on fait une action ensuite sur a[x-1] i.e. a[0] qui n'existe pas.


Par ailleurs la manière dont c'est codé me fait penser (j'ai peut être tord) que c'est pas très optimisé/canonique et du coup plus difficile de voir en quelques secondes s'il y a un problème sur les indices ou autres.