/*Programmma Qsort */ /* Mettete alla prova il programma con GOAL:
qsort([4,8,2,7],RISP). */ check_determ domains l = integer* predicates dividi(integer,l,l,l) concatena(l,l,l) qsort(l,l) clauses concatena([],X,X). concatena([H|L],L1,[H|L2]) :- concatena(L,L1,L2). dividi(_,[],[],[]). dividi(H,[A|X],[A|Y],Z) :- A <= H,!, dividi(H,X,Y,Z). dividi(H,[A|X],Y,[A|Z]) :- A > H,!, dividi(H,X,Y,Z). qsort([],[]). qsort([H|T],S) :- dividi(H,T,A,B), qsort(A,A1), qsort(B,B1), concatena(A1,[H|B1],S).
---------- Dialog ----------+ Goal: qsort([4,8,2,7],RISP).¦ RISP=[2,4,7,8] ¦ 1 Solution ¦ Goal: qsort([8,2,5,10],RISP)¦ . ¦ RISP=[2,5,8,10] ¦ 1 Solution ¦ Goal: qsort([8,3,7,6],RISP).¦ RISP=[3,6,7,8] ¦ 1 Solution ¦ Goal: ¦ ¦