mogoce bo prov prslo
lp L
Gregor Mostar wrote:
Se pridruzujem prosnji!
Zivjo!
Bi mi lahko nekdo, ki je to leto hodil na vaje od MOS-a poslal datoteko s
fukcijami, ki ste jih definirali na vajah? Zgleda, da funkcije od prejšnjih
let dajejo drugačne rezultate pri izpitih, kot te, ki jih asistent
uporablja.
LP, Domen
:- [list].
%len(L,N) - stevilo elementov seznama
len([],0).
len([H|T],N1):-
len(T,N),
N1 is N+1.
%sulm (L,N) - vsota elementov seznama
sum([],0).
sum([H|T],N1):-
sum(T,N),
N1 is N+H.
%min(L,Min) - vrne minimalni element seznama
min([H],H).
min([H|T],Min1):-
min(T,Min),
H < Min,
Min1 is H.
min([H|T],Min):-
min(T,Min),
H >= Min.
%max(L,Max) - vrne maksimalni element seznama
max([H],H).
max([H|T],Max1):-
max(T,Max),
H > Max,
Max1 is H.
max([H|T],Max):-
max(T,Max),
H =< Max.
%is_sorted(L) - vrne true ali no ce je L sortiran
is_sorted([H]).
is_sorted([H1,H2|T]):-
H1 =< H2,
is_sorted([H2|T]).
%insertSort(L,SL) - najde najmanjsi element in ga doda v SL in odstrani iz L
insertSort([],[]).
insertSort(L,[Min|SL1]):-
min(L,Min),
delete(Min,L,L1),
insertSort(L1,SL1).
%quickSort(L,SL) - izbere pivot, preostale elemente sortira v dva seznama -
seznam vecjih in seznam manjsih in nato sestavi skupaj
quickSort([],[]).
quickSort([H|T],SL):-
pivot(H,T,LM,LV),
quickSort(LM,SLM),
quickSort(LV,SLV),
conc(SLM,[H|SLV],SL).
pivot(P,[],[],[]).
pivot(P,[H|T],[H|LM],LV):-
H =< P,
pivot(P,T,LM,LV).
pivot(P,[H|T],LM, [H|LV]):-
H > P,
pivot(P,T,LM,LV).
%permutation(X,L).
permutation([],[]).
permutation([X|L],P):-
permutation(L,L1),
insert(X,L1,P).%member(X,L)
member(X,[X|T]).
member(X,[H|T]):-
member(X,T).
%conc(L1,L2,L3)
conc([],L2,L2).
conc([H|T],L2,[H|L3]):-
conc(T,L2,L3).
%insert X v seznam L, vrne naj L1
insert(X,L,[X|L]).
insert(X,[H|T],[H|L1]):-
insert(X,T,L1).
%delete X v seznamu L in vrni L1
delete(X,[X|T],T).
delete(X,[H|T],[H|L1]):-
delete(X,T,L1).
%divide(L,L1,L2) iz seznama L naredi L1 in L2, ki sta enako dolga
%divide([H|T],[H|L1],T).
divide([H|T],[H|L1],T):-
divide(T,L1,L2). %to ne dela dobro
%reverse(L,R)
reverse([],[]).
reverse([H|T],R):-
reverse(T,RT),
conc(RT,[H],R).
palindrome(L):-
reverse(L,L).