Documente Academic
Documente Profesional
Documente Cultură
class predicates
bubblesort : (lista, lista) procedure(i,o).
clauses
bubblesort(L, R) :-
schimba(L, Sortat1, S),
S = 1,
bubblesort(Sortat1, R), !.
bubblesort(L, L).
clauses
run() :-
console::init(),
citeste(L),
stdIO::write("Lista:\n",L),
bubblesort(L,L1),
stdIO::write("\nLista ordonata:\n",L1),!.
run().
end implement main
class predicates
gt: (integer, integer) determ.
clauses
gt(X, Y) :- X > Y.
class predicates
insert : (integer, lista, lista) nondeterm(i,i,o).
clauses
insert(X, [Y | Rest],[Y | Rest1]) :-
gt(X, Y),!,
insert(X, Rest,Rest1).
insert(X, L, [X | L]) .
prof. dr. ing. Cornelia Gyorodi 15
Metoda de sortare Insertsort (continuare)
class predicates
insertsort : (lista, lista) nondeterm(i,o).
clauses
insertsort([],[]).
insertsort([X | Rest],Sortat) :-
insertsort(Rest, Sortat1),
insert(X, Sortat1,Sortat).
clauses
run() :-
console::init(),
citeste(L),
stdIO::write("Lista:\n",L),
insertsort(L,L2),
stdIO::write("\nLista sortata:\n",L2),!.
run().
end implement main
prof. dr. ing. Cornelia Gyorodi 16
Exemplu
Diferența a două liste:
domains
lista=integer*
class predicates
dif : (lista, lista, lista) procedure(i,i, o).
clauses
dif([],[],[]).
dif([X|Rest1],[Y|Rest2],[Z|Rez]):-
dif(Rest1,Rest2,Rez),Z=X-Y.
dif([_|Rest1],L,Rez):-dif(Rest1,L,Rez).