2016-05-12 10 views
1

so habe ich folgendes Prädikat, das ein Element zufällig in eine Liste einfügt mehrere Lösungen zu geben:Scramble eine Liste von Elementen in Prolog mit einem bestimmten Prädikat?

insert(X,Y,Z):- append(A,B,X),append(A,[Y|B],Z). 

Ich möchte ein weiteres Prädikat schreiben, die die Elemente in einer Liste kriecht, und gibt mehrere Lösungen. Mir ist bewusst, dass es eine Bibliotheksfunktion namens random_permutation oder etwas gibt, aber ich würde gerne wissen, wie man es basierend auf meinem eigenen Prädikat schreibt?

ich folgendes versucht, aber es scheint hoffnungslos falsch:

permute([],[]). 
permute(X,Y):-insert(X,_,Z),permute(Z,Y). 

Also dieses Prädikat mit I permute ([1,2,3], X) geben könnte. und erhalten Sie als Ergebnis [1,3,2], [2,3,1], etc .... zum Beispiel.

Danke.

Antwort

1

versuchen, diese

permute([],[]). 
permute([X|Xs],Y) :- permute(Xs,P), insert(P,X,Y). 
+0

funktioniert perfekt! Vielen Dank! – Cypher236

Verwandte Themen