Wenn eine Eingabeliste gegeben, ich möchte eine neue Liste erstellen und es sollte:Prolog Vergleichen Elemente der Liste
- Immer h vor der neuen Liste hinzufügen
- Vergleichen Sie alle zwei aufeinanderfolgende Elemente der Eingabeliste, und, wenn sie gleich sind, an die neue Liste y angehängt, wenn nicht, anhängen x.
Beispiel:
?- control([a,a,b,b],R).
R = [h,y,x,y].
Hier ist mein Code so weit:
control([H,H|T],K,[K,0|T2]):- control([H|T],[K,0],T2).
control([H,J|T],K,[K,1|T2]):- control([J|T],[K,1],T2).
control([H],G,G).
Aber es ist nicht richtig funktioniert.
?- control([a,a,b,b],[h],L).
L = [[h], 0, [[h], 0], 1, [[[h], 0], 1], 0, [[[...]|...], 1], 0] ;
L = [[h], 0, [[h], 0], 1, [[[h], 0], 1], 1, [[[...]|...], 1], 1] ;
L = [[h], 1, [[h], 1], 1, [[[h], 1], 1], 0, [[[...]|...], 1], 0] ;
L = [[h], 1, [[h], 1], 1, [[[h], 1], 1], 1, [[[...]|...], 1], 1] ;
false.
Wie kann ich es richtig machen?
Bitte Beispiele geben, wie Sie erwarte, dass das funktioniert. – false
Also tun Sie einfach so, als ob es funktioniert und zeigen Sie, wie Sie es benutzen würden. – false
Jetzt habe ich einige Verbesserungen, hier ist mein neuer Code. Karama ([H, H | T], [0 | L]): - Karama ([H | T], L). Karama ([H, J | T], [1 | L]): - Karama ([J | T], L). Karama ([H], []). Init (A, Xs, [A | L]): - Karama (Xs, L). Jetzt gibt es mir ? - init (1, [1,1,0,0], M). M = [1, 0, 1, 0]; M = [1, 0, 1, 1]; M = [1, 1, 1, 0]; M = [1, 1, 1, 1]; falsch. Aber ich möchte nur zuerst auftreten – mrnard