Bonjour,
j'ai une matrice d'entier.
je veux la traiter ligne par ligne et ajouter le résultat de ce traitement à une liste.
Don au final, quand je sors de mon prédicat, j'obtiens la liste des solutions correspondant à chacune des lignes de ma matrice.
J'ai le code qui correspond à ce prédicat, mais il ne marche pas, enfin presque, mais pas tout à fait.
Voilà mon code :
j'ai utilisé la trace de Sicstus prolog pour voir ce qui se passe.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 createShapes(Num, [[Width, Height, WidthGap, HeightGap] | []], [[Bottom, Top]]):- createShape(Num, Width, Height, WidthGap, HeightGap, Bottom, Top). createShapes(1, [[Width, Height, WidthGap, HeightGap] | Reste], [[Bottom, Top] | Suite]):- createShape(1, Width, Height, WidthGap, HeightGap, Bottom, Top), createShapes(1, Reste, Suite).
Conclusion, le prédicat me génére bien ma liste,
mais pour une raison que je ne comprend pas, il continue avec un
REDO
Pour info voilà ce que dit la doc de sictus :
REDO : Prompt at subsequent exits generated by nondeterminate rule bod-
ies.
Donc, j'en conclue qu'au dernier appel de ma méthode, après avoir généré ma liste, il tente un appareillage qu'il ne connaît pas et échoue.
Ca fait un moment que je réfléchis sur ce petit bout de code, mais je ne vois pas ce qui cloche...
Est ce que vous auriez une petite idée??
Merci beaucoup.
Partager