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).

Reply via email to