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





:- [aritmetika].

% union(A,B,Uni) - A u B = Uni
union([],B,B).

union([H|T],B,[H|Uni]):-
       union(T,B,Uni),
       \+member(H,Uni).

union([H|T],B,Uni):-
       union(T,B,Uni),
       member(H,Uni).

%presek(A,B,Pre) - A n B = Pre
presek([],B,[]).

presek([H|T],B,Uni):-
       presek(T,B,Uni),
       \+member(H,B).

presek([H|T],B,[H|Uni]):-
       presek(T,B,Uni),
       member(H,B).


%razlika(A,B,Raz) - A \ B = Raz
razlika([],B,[]).

razlika([H|T],B,Uni):-
       razlika(T,B,Uni),
       member(H,B).

razlika([H|T],B,[H|Uni]):-
       razlika(T,B,Uni),
       \+member(H,B).

%subset(A,B) - ce je A podmnozica Bja, potem vrne YES
subset([],B).

subset([H|T],B):-
       member(H,B),
       subset(T,B).

%powereset(A,B) - B = potencna mnozica mnozice A - povedal asistent
powerset([],[]).

powerset([H|T],[H|T1]):-
       powerset(T,T1).

powerset([_|T],T1):-
       powerset(T,T1).


On 12/10/07, Matej Pintar <[EMAIL PROTECTED]> wrote:
>
> Aha... a ta funkcija maxlist je že v tisti množici "danih" funkcij? A
> ima kdo listo teh "danih" funckij?
>
> lp,
> Matej
>
> Gregor Semrl wrote:
> > Nekako takole naj bi tole zgledalo (s primerom seznama):
> >
> > ?- _L=[7,1,12,7,8,1,68,44], conc(_L1,[X|_],_L), maxlist(_L1,_M),X>=_M.
> > X = 7 ? ;
> > X = 12 ? ;
> > X = 68 ? ;
> > no
> >
> > LP
> > Gregor
> >
> > ---------- Forwarded message ----------
> > From: Matej Pintar <[EMAIL PROTECTED]>
> > To: FRIClist <[email protected] >
> > Date: Mon, 10 Dec 2007 00:36:15 +0100
> > Subject: Re: [Friclist] Re: MOS: 2007-09-17
> > Meni mi je zelo sumljiva 2.e. Nekako je ne znam sestaviti skupaj? Ima
> > kdo kakšno idejo, kako se jo reši?
> >
> > Sicer pa je ta izpit na prejšnem roku zelo specifičen in v primerjavi z
> > ostalimi nekajkrat zahtevnejši.
> >
> >
> > lp,
> > Matej
> >
>
>

Reply via email to