PROGRAMMIERAUFGABE 7.1 qs([],[]). qs([X|XL],XLS) :- split(XL,X,YL,ZL), qs(YL,YLS), qs(ZL,ZLS), append(YLS,[X|ZLS],XLS). split([],_,[],[]). split([X|XS],P,[X|YS],ZS) :- X =< P, split(XS,P,YS,ZS). split([X|XS],P,YS,[X|ZS]) :- X > P, split(XS,P,YS,ZS). PROGRAMMIERAUFGABE 7.2 flatten1([],[]). flatten1([XL|XLL],YL) :- flatten1(XLL,ZL), append(XL,ZL,YL). AUFGABE 7.3 q(X,Y,Z) ist erfüllt, falls Y eine Liste der Länge 2n+1 ist und Z das (n+1)-te Element der Liste X ist. p(X,Y) ist erfüllt, falls X eine Liste der Länge 2n+1 ist und Y das (n+1)-te Element der Liste X ist. Oder anders ausgedrückt: falls X eine Liste ungerade Länge ist und Y das mittlere Element von X ist. AUFGABE 7.4