Sitz grade anner Prolog Aufgabe und verzweifel daran fast und hoffe das mir hier wer weiterhelfen kann.
Aufgabe:
Formulieren Sie ein Prolog-Programm, welches die folgenden Operationen über eine Liste L ausführt und daraus eine Ergebnisliste L1 bildet. Entfernen aller Ausdrücke X aus einer Liste L.
bisherige Lösung:
prog(X,[H|T],[]) :- X==H,prog(X,T,[]).
prog(X,[H|T],[]) :- not(X==H),prog(X,T,[H]).
prog(X,[H|T],[H1]) :- X==H,prog(X,T,[H1]).
prog(X,[H|T],[H2]) :- not(X==H),prog(X,T,[H2,H]).
prog(X,[H|T],[H1|T1]) :- X==H,prog(X,T,[H1|T1]).
prog(X,[H|T],[H2|T2]) :- not(X==H),prog(X,T,append([H2|T2],[H],result)).
prog(X,[],[H|T]) :- out([H|T]).
out([H|T]) :- write(H),write(','),out(T).
Funktioniert auch alles soweit hab nur ein Problem in der Zeile:
prog(X,[H|T],[H2|T2]) :- not(X==H),prog(X,T,append([H2|T2],[H],result)).
ich krieg einfach nicht hin das Element HINTEN an die Liste anzuhängen. Habs shcon mit allen möglichen Konstrukten wie ([H2,T2,H]) versucht und was auch immer aber irgendwie bekomm ich dann immer solche Ausdrücke [1,1[[3,]2,] oder ähnliches.
Ich möchte einfach nur ne Liste haben [H2|T2] wo das Element h hinten angehängt wird das kann doch nicht so kompliziert sein....
Aufgabe:
Formulieren Sie ein Prolog-Programm, welches die folgenden Operationen über eine Liste L ausführt und daraus eine Ergebnisliste L1 bildet. Entfernen aller Ausdrücke X aus einer Liste L.
bisherige Lösung:
prog(X,[H|T],[]) :- X==H,prog(X,T,[]).
prog(X,[H|T],[]) :- not(X==H),prog(X,T,[H]).
prog(X,[H|T],[H1]) :- X==H,prog(X,T,[H1]).
prog(X,[H|T],[H2]) :- not(X==H),prog(X,T,[H2,H]).
prog(X,[H|T],[H1|T1]) :- X==H,prog(X,T,[H1|T1]).
prog(X,[H|T],[H2|T2]) :- not(X==H),prog(X,T,append([H2|T2],[H],result)).
prog(X,[],[H|T]) :- out([H|T]).
out([H|T]) :- write(H),write(','),out(T).
Funktioniert auch alles soweit hab nur ein Problem in der Zeile:
prog(X,[H|T],[H2|T2]) :- not(X==H),prog(X,T,append([H2|T2],[H],result)).
ich krieg einfach nicht hin das Element HINTEN an die Liste anzuhängen. Habs shcon mit allen möglichen Konstrukten wie ([H2,T2,H]) versucht und was auch immer aber irgendwie bekomm ich dann immer solche Ausdrücke [1,1[[3,]2,] oder ähnliches.
Ich möchte einfach nur ne Liste haben [H2|T2] wo das Element h hinten angehängt wird das kann doch nicht so kompliziert sein....