ich aus einer zuvor geordneten Liste in Prolog mehr als eine Wiederholung entfernen möchte. Ich würde die Ausgabe wie wie folgt aussehen:entfernen Wiederholungen mehr als einmal
Beispiel 1.
?- remove_dups ([1,1,2,2,3,4,5,5,6], List).
List = [3,4,6]
Wie Sie sehen können, wäre es nicht eine Wiederholung des gleichen Elements entfernen, aber alles.
habe ich den folgenden Algorithmus, ich einige Änderungen gemacht, aber ohne Erfolg. Hier ist der Algorithmus, den ich verwenden:
remove_dups([], []).
remove_dups([X], [X]).
remove_dups([X,X|T], [X|R]) :-
remove_dups([X|T], [X|R]).
remove_dups([X,Y|T], [X|R]) :-
X \== Y,
remove_dups([Y|T], R).
remove_dups([X,Y|T], [X|R]) :-
( X == Y
-> remove_dups([Y|T], [X|R])
; remove_dups([Y|T], R)
).
jedoch der Ausgang ich mit diesem Algorithmus habe dies.
?- remove_dups([1,1,2,2,3,4,5,5,6], List).
List = [1,2,3,4,5,6]
Aber ich würde es wie in Beispiel 1, irgendwelche Tipps zu sein?
In Ihrem Skip ([], []) sollte Skip ([], [], []) stehen. –
@AndersonMendes Ach, du hast Recht, mir fehlte das erste Argument. Es sollte '_', nicht' [] 'sein, da es sich um ein Element aus der Liste handelt und nicht um eine leere Liste. Vielen Dank! – dasblinkenlight
Entschuldigung, ich bin ein Prolog-Neuling. Vielen Dank! –