Je blo na listo poslan par dni nazaj... Evo še 1x :)

LP, Domen

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

% 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 8/25/07, Gregor Mostar <[EMAIL PROTECTED]> wrote:
>
> A obstaja kje kak seznam katere prologove vgrajene funkcije lahko
> uporabljamo, oz. se jih je delalo na vajah.
> Mislim take kot so findall, bagof, setof,.. Ok, te poznam.
> Sem pa gledal asistentove resitve na e-studij in je vmes kaksna, ki jo
> vidim
> prvic.
>
>
> Lp, Gregor
>
> Domen Grabec wrote:
>
> Hehe Vrčko lepa rešitev mediane :) super!
>
> Tisti k se učite za MOS pomagate si lahko s tole stranjo:
> http://www.e-studij.si/UL/FRI/UNI-RI/MOS
>
> Gor je par rešenih kolokvijev. Če imate boljše/alternativne rešitve, dajte
> jih postat gor. Tudi kakšni novi, še nerešeni kolokviji bi bili
> dobrodošli.
>
> Fino bi bilo, da damo tudi kaj teorije gor poleg prologa...
>
> LP, Domen
>
> On 8/23/07, Lovro <[EMAIL PROTECTED]> wrote:
>
> d) findall(X,(member(X,L),X>5),L1), length(L1,N)
>
> sam tud to nisem 100% :)
>
> Gregor Mostar wrote:
>
> Hvala Jernej!
>
> Kaj pa tole bi znal:
>
> (2.) kako bi prologu zastavili naslednja vprasanja? Postavite vprasanja,
>
> ne
>
> pisite odgovorov!
>
> c) Ali velja p(a) in hkrati velja p za kaksen element, ki ni a?
>
> d) Koliko elementov seznama L, ki vsebuje samo stevila, je vecjih od 5?
>
>
> 1.rok 2007:
>
> mediana(L,M):-
>      conc(Left,[M|Right],L),
>      length(Left,X),
>      length(Right,X).
> mediana(L,M):-
>      conc(Left,[M1,M2|Right],L),
>      length(Left,X),
>      length(Right,X),
>      M is (M1 + M2)/2.
>
>
> On 8/23/07, Gregor Mostar <[EMAIL PROTECTED]> <
>
> [EMAIL PROTECTED]> wrote:
>
>
> A bi znal kdo resiti prvi nalogi iz zadnjih dveh izpitov MOS  -
>
> prolog?
>
> 2.rok 2007 - 26.6.2007:
> 1.) Napisite program, ki za podani seznam, v katerem so izkljucno
>
> elementi
>
> tipa atomic, vrne element, ki se najpogosteje pojavlja.
>
>
> 1.rok 2007:
> 1.) napišite progam, ki za podani urejeni seznam števil izračuna in
>
> vrne
>
> mediano (srednji element). Pazite, mediana za sezname sode dolžine, je
> povprečje srednjih dveh elementov.
>
>
>
> Hvala!
>
> LP, Gregor
>
>
>
> --
> Jernej Vrčko
> MSN messenger: [EMAIL PROTECTED]
> SKYPE: kekecpasteta
>

Reply via email to