Salut! Je dois générer une liste de coordonnées ENTIERES appartenant à un rectangle.
Les données sont X1,Y1 et X2,Y2 les coins du rectangle...
Je suis en prolog 4 (je n'ai pas le choix), et j'ai la solution suivante :
bagof renvoie : error : not implemented!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 % je définis ce qu'est un tuple cherché tuple([X1,Y1],[X2,Y2], [X,Y]) :- between(X1,X2,X), between(Y1,Y2,Y). % J'indique à Prolog que je veux tous les tuples verifiant mon, prédicat tuple tous_les_tuples(X, Y , L) :- bagof(T, tuple(X,Y,T), L).
Bon, j'essaye autrement...
J'ai la solution suivante :
- Générer une liste de (X2-X1+1)*(Y2-Y1+1) couplets
- Contraindre la liste de couplets (en gros couplets_tous_entiers, valeurs_tous_compris_entre X1 et X2, Y1 et Y2, couplets_tous_différents)
- Enumérer
Le couplets_tous_differents chient car les contraintes doivent etre redondantes et du coup ça crashe purement et simplement!
En attendant j'ai fait un double for mais c'est pas du tout le bon esprit :S
Vous avez une idée de comment faire ça bien?
Merci !
Partager