% Trenne mit Hilfe von Akkumulatoren: alle schon gesehenen Zahlen/Nichtzahlen % in Hilfslisten sammeln und diese ausgeben, wenn die Eingabeliste leer ist. trenneA(Liste,Zahlen,Nichtzahlen) :- trenneA(Liste,[],[],Zahlen,Nichtzahlen). % Anfangs leere Hilfslisten; % trenneA(+Liste,+gesehene Zahlen,+gesehene Nichtzahlen,-Zahlen,-Nichtzahlen). trenneA([],ZsAkk,NZsAkk,Zahlen,Nichtzahlen) :- % Falls Eingabe leer ist: Zahlen = ZsAkk, % Ergebnis = Gesammeltes Nichtzahlen = NZsAkk. trenneA([X|Xs],ZsAkk,NZsAkk,Zahlen,Nichtzahlen) :- % Sonst: number(X), % eine weitere Zahl gesehen, trenneA(Xs,[X|ZsAkk],NZsAkk,Zahlen,Nichtzahlen). % sammeln und weitermachen; trenneA([X|Xs],ZsAkk,NZsAkk,Zahlen,Nichtzahlen) :- not(number(X)), % eine weitere Nichtz.gesehen, trenneA(Xs,ZsAkk,[X|NZsAkk],Zahlen,Nichtzahlen). % sammeln und weitermachen!