Bonjour,
J'ai fait un prédicat qui affiche un Plateau. Un Plateau est une liste de ce genre :
Voici le code de mon Prédicat (pour l'instant j'essaie déjà d'afficher le premier élément de la liste) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 [ <div style="margin-left:40px"> [[mais, riz, ble, ble], [ble, mais, sucre, riz]], [[ble, 7], [riz, 6]], 3, [cafe, cacao], [riz, ble]</div>]
Avec affiche_liste2 qui affiche une liste imbriquée (de un niveau, soit une map en fait) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 afficher_plateau(Plateau) :- <div style="margin-left:40px"> nth0(I, Plateau, Marchandises), write(I), writeln(' Marchandises'), afficher_liste2(Marchandises), I1 is I + 1, nth0(I1, Plateau, Bourse), write(I1), writeln(' Bourse'), I2 is I + 1, nth0(I, Plateau, PositionTrader), write(I2), writeln(' PositionTrader').</div>
Et affiche_liste affiche une liste simple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 afficher_liste2([X|L]) :- <div style="margin-left:40px"> nth0(I, [X|L], E), writeln(' '), afficher_liste(E), I is I + 1, afficher_liste2([X|L]).</div>
Quand j'utilise affiche_liste2 toute seule sur par exemple le premier élément de la liste :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 afficher_liste([X|L]) :- <div style="margin-left:40px"> write(X), write(' '), afficher_liste(L).</div>
J'ai bien le résultat escompté (encore que...) mais lorsque j'utilise ce même prédicat dans afficher_plateau, ça me ressort du n'importe quoi :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 affiche_liste2([[mais, riz, ble, ble], [ble, mais, sucre, riz]]).
Je précise que sans cet appel à afficher_liste2, mais avec un simple writeln par exemple, j'ai une exécution normale :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 0 Marchandises mais riz ble ble ble mais sucre riz 1 Marchandises ble 7 riz 6 2 Marchandises 3 Marchandises 4 Marchandises
Est-ce que quelqu'un peut m'aider ? On dirait que les fonctions interfèrent entre elles.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 0 Marchandises [[mais,riz,ble,ble],[ble,mais,sucre,riz]] 1 Bourse 2 PositionTrader true .
PS : Je viens de voir que j'ai utilisé I dans affiche_plateau là où ça aurait dû être I1 ou I2; j'ai fait la modification : ça ne vient pas de là.
Partager