2016-04-05 12 views
-2

Wenn ich eine Liste in Prolog wie X = [1, 2, 3, 4, 6, 7] habe, wie füge ich das Element 5 zur Liste hinzu, um X = [1, 2, 3, 4, 5, 6, 7] zu haben?Prolog - wie fügen Sie ein Element in eine Liste ein

+2

Bitte zeigen Sie alle Versuche, die Sie bei der Lösung dieses Problems gemacht haben. – lurker

+0

Müssen Listen nach dem Einfügevorgang sortiert werden? – whd

Antwort

0

1. Parameter: die "neue" Element

2. Parameter: Altliste

3. Parameter: Neue Liste mit dem "neuen" Element

addElement(X, [], [X]). 
addElement(X, [Y | Rest], [X,Y | Rest]) :- X @< Y, !. 
addElement(X, [Y | Rest1], [Y | Rest2]) :- addElement(X, Rest1, Rest2). 

Probe Verbrauch:

?- addElement(5,[1,2,3,4,6,7], X). 
X = [1, 2, 3, 4, 5, 6, 7]. 

?- addElement(5,[1,2,3,4,6,7], [1,2,3,4,5,6,7]). 
true. 

?- addElement(5,[1,2,3,4], [1,2,3,4,5]). 
true . 

?- addElement(5,[1,2,3,4], [1,2,3,5]). 
false. 

?- addElement(5,X, [1,2,3,5]). 
X = [1, 2, 3] ; 
+0

Ich kann nicht ausgegeben werden. addElement [5, [1,2,3,4], [6,7]). – Priyaranjan

+1

Während dieser Code die Frage beantworten kann, zusätzliche Kontext in Bezug auf _why_ und/oder _how_ es Antworten die Frage würde erheblich verbessern seine langfristige Wert. Bitte [bearbeiten] Sie Ihre Antwort, um eine Erklärung hinzuzufügen. –

+1

@Priyaranjan wirst du deine ursprüngliche Frage klären müssen (benutze Edit), wenn du irgendeine Art von Ergebnis außer 'false' für die Abfrage' addElement (5, [1,2,3,4], [ 6,7]). '. – lurker

0

SortedList wird das Ergebnis sein, das Sie suchen.

append([1,2,3,4,6,7], [5], Z), sort(Z, SortedList). 
Verwandte Themen