Zakaj je tukaj : functor(a + b + 2 * c, F, A). - glavni funktor + (beri:
plus)?
torej dobimo
F=+,
A=2;

lp

2008/6/22 Matjaz Horvat <[EMAIL PROTECTED]>:

> Ta del je potem kvečjemu:
>
> integer(X), X<=9, X>=9;
> atom(X), member(X, [a,b,c,d,e,f]).
>
> lpM
>
> 2008/6/22 Miha Cerar <[EMAIL PROTECTED]>:
>
> > ne, v seznamu mankajo še št. od 0-9, al pa pomoje če bi se naredil, da če
> > je
> > integer(X)<9.
> >
> > 2008/6/22 Matjaz Horvat <[EMAIL PROTECTED]>:
> >
> > > A ta 4. je ok:
> > > http://www.e-studij.si/UL/FRI/UNI-RI/MOS/Izpiti/2007-12-10-prolog
> > >
> > > A to pomeni da potem ni treba preverjati števil, ker so že zagotovo
> not?
> > > Samo za atome je potrebno preveriti, da so a - e?
> > >
> > > lpM
> > >
> > > 2008/6/22 Matjaz Horvat <[EMAIL PROTECTED]>:
> > >
> > > > Hehe, saj res, s tole notacijo zgleda precej bolj optimalno, čeprav
> je
> > > > vsebinsko rešitev ista.
> > > >
> > > > Hvala.
> > > >
> > > >
> > > > lpM
> > > >
> > > > 2008/6/22 Uroš Jurglič <[EMAIL PROTECTED]>:
> > > >
> > > >> memberBT(X, b(_,X,_)).
> > > >> memberBT(X, b(L,_,R)) :- memberBT(X, L) ; memberBT(X, R).
> > > >>
> > > >> hmm, kar je pravzaprav cist isto kot spodaj :)
> > > >>
> > > >> prvo pravilo: uspe, ce je X v node-u
> > > >> drugo pravilo: uspe, ce je X ali v levem ali v desnem poddrevesu...
> > > >> ce je L ali R nil se itak ne ujame na nobeno pravilo, saj ni oblike
> > > >> b(...), tko da memberBT(X, nil) nikol ne uspe
> > > >>
> > > >> 2008/6/22 Matjaz Horvat <[EMAIL PROTECTED]>:
> > > >> > Tale gotovo ni prav...
> > > >> >
> > > >> > Binarna drevesa so podana v obliki b(L, E, R), kjer sta L in R
> levo
> > > >> oziroma
> > > >> > desno poddrevo, E pa element v vozlišču. Prazno drevo predstavlja
> > > simbol
> > > >> > nil. Drevo z enim samim elementom je tako b(nil, E, nil). Napišite
> > > >> predikat
> > > >> > memberBT(X, BT), ki z vračanjem vrne vse elemente X binarnega
> > drevesa
> > > >> BT!
> > > >> >
> > > >> > memberBT(X, b(L, X, R)).
> > > >> > memberBT(X, b(L, _, R)):-memberBT(X,L).
> > > >> > memberBT(X, b(L, _, R)):-memberBT(X,R).
> > > >> >
> > > >> > Se komu sanja kako se to reši?
> > > >> >
> > > >> > lpM
> > > >> >
> > > >> > 2008/6/22 Uroš Jurglič <[EMAIL PROTECTED]>:
> > > >> >
> > > >> >> evo tole deluje:
> > > >> >> L=[7,1,12,7,8,1], conc(First,[X|_],L), findall(Y,
> (member(Y,First),
> > > >> >> Y>X), LX), length(LX,0).
> > > >> >>
> > > >> >> btw: s setof ne dela, ker setof ne vrne praznega seznama, ampak
> > > >> >> preprosto ne uspe... findall pa vedno uspe, ampak ko ni zadetkov
> > vrne
> > > >> >> prazen list.
> > > >> >>
> > > >> >>
> > > >> >>
> > > >> >>
> > > >> >> 2008/6/21 Miha Cerar <[EMAIL PROTECTED]>:
> > > >> >> > pomoje je potrebno kaj takega spravt v rekurzijo:
> > > >> >> > ?- _L=[7,1,12,7,8,1], conc(_,[P,_B|_],_L),P>_B.
> > > >> >> > delamo na tem :)
> > > >> >> >
> > > >> >> >
> > > >> >> >
> > > >> >> > 2008/6/21 Uroš Jurglič <[EMAIL PROTECTED]>:
> > > >> >> >
> > > >> >> >> kaj pa tole?
> > > >> >> >> e) Z vračanjem poišči vse elemente seznama L, pred katerimi v
> > > >> seznamu
> > > >> >> >> ni nobenega večjega elementa! (npr, v L = [7,1,12,7,8,1] sta
> > taka
> > > >> >> >> elementa 7 in 12)!
> > > >> >> >>
> > > >> >> >> 2008/6/21 Uroš Jurglič <[EMAIL PROTECTED]>:
> > > >> >> >> > setof( X, A^B^(parent(X,A), parent(X,B), not(A=B),
> female(A),
> > > >> >> >> > female(B)), L ), length(L, N).
> > > >> >> >> >
> > > >> >> >> > tole bi po logiki slo, nisem pa sprobal...
> > > >> >> >> >
> > > >> >> >> >
> > > >> >> >> > 2008/6/21 Miha Cerar <[EMAIL PROTECTED]>:
> > > >> >> >> >>
> > > >> >> >> >> Mal resujem naloge, in ce gre se kdo..bi mogocel znal
> vprasat
> > > >> prolog
> > > >> >> >> tole:
> > > >> >> >> >> imate podano družinsko drevo (z relacijami parent ter
> > > >> male/female)
> > > >> >> >> -koliko
> > > >> >> >> >> ljudi ima več kot dve hčerki?
> > > >> >> >> >> Znam izpisat št. vseh ki imajo hči, več pa ne ..
> > > >> >> >> >> Anyone?
> > > >> >> >> >>
> > > >> >> >> >> lp
> > > >> >> >> >>
> > > >> >> >> >> 2008/6/21 Uroš Jurglič <[EMAIL PROTECTED]>:
> > > >> >> >> >>
> > > >> >> >> >> > Jaz tuki ne vidim nobene razlike, vsaj ce imas class
> takole
> > > >> >> definiran:
> > > >> >> >> >> > class(X, positive) :- X>0.
> > > >> >> >> >> > class(X, negative) :- X<0.
> > > >> >> >> >> >
> > > >> >> >> >> > Potem gre pri splitu z rezom za 'zeleni rez' - ni
> > > deklarativne
> > > >> >> >> razlike, je
> > > >> >> >> >> > samo postopkovna (torej samo optimizacija).
> > > >> >> >> >> >
> > > >> >> >> >> > Ce pozenem obe verziji in da uporabim zgornjo definicijo
> > > class,
> > > >> >> dobim
> > > >> >> >> vedno
> > > >> >> >> >> > isti rezultat in ne tko kot si ti napisal. Razen ce imas
> > > class
> > > >> kako
> > > >> >> >> drugace
> > > >> >> >> >> > definiran..?
> > > >> >> >> >> >
> > > >> >> >> >> >
> > > >> >> >> >> >
> > > >> >> >> >> >
> > > >> >> >> >> >
> > > >> >> >> >> > 2008/6/21 Miha Cerar <[EMAIL PROTECTED]>:
> > > >> >> >> >> >
> > > >> >> >> >> > > Še bolj postopkovno razloženo :)
> > > >> >> >> >> > >
> > > >> >> >> >> > > če ni reza dobiš tole:
> > > >> >> >> >> > >
> > > >> >> >> >> > > | ?- split([1,2,-3],P,L) .
> > > >> >> >> >> > >  L = [-3],
> > > >> >> >> >> > > P = [1,2] ? ;
> > > >> >> >> >> > >
> > > >> >> >> >> > > L = [2,-3],
> > > >> >> >> >> > > P = [1] ? ;
> > > >> >> >> >> > >
> > > >> >> >> >> > > L = [1,-3],
> > > >> >> >> >> > > P = [2] ? ;
> > > >> >> >> >> > >
> > > >> >> >> >> > > L = [1,2,-3],
> > > >> >> >> >> > > P = [] ?
> > > >> >> >> >> > >
> > > >> >> >> >> > > če pa je pa samo pravilno:
> > > >> >> >> >> > > | ?-
> > > >> >> >> >> > > split([1,2,-3],P,L)
> > > >> >> >> >> > > .
> > > >> >> >> >> > >
> > > >> >> >> >> > > L = [-3],
> > > >> >> >> >> > > P = [1,2] ? ;
> > > >> >> >> >> > >
> > > >> >> >> >> > > 2008/6/21 Miha Cerar <[EMAIL PROTECTED]>:
> > > >> >> >> >> > >
> > > >> >> >> >> > > > verzija brez reza lahko pri vračanju kliče cilj
> > class(X,
> > > >> >> >> >> > > positive/negative)
> > > >> >> >> >> > > > ne glede na to, kakšen je X
> > > >> >> >> >> > > >
> > > >> >> >> >> > > > 2008/6/21 Matjaz Horvat <[EMAIL PROTECTED]>:
> > > >> >> >> >> > > >
> > > >> >> >> >> > > > REZ
> > > >> >> >> >> > > >> split([],[],[]).
> > > >> >> >> >> > > >> split([X|R],[X|R1],N):-class(X,positive),!,
> > > split(R,R1,N).
> > > >> >> >> >> > > >> split([X|R],P,[X|R1]):-class(X,negative),
> > split(R,P,R1).
> > > >> >> >> >> > > >>
> > > >> >> >> >> > > >> BREZ
> > > >> >> >> >> > > >> split([],[],[]).
> > > >> >> >> >> > > >> split([X|R],[X|R1],N):-class(X,positive),
> > split(R,R1,N).
> > > >> >> >> >> > > >> split([X|R],P,[X|R1]):-class(X,negative),
> > split(R,P,R1).
> > > >> >> >> >> > > >>
> > > >> >> >> >> > > >> Najdite in razložite problem pri verziji brez reza
> > > >> (verzija
> > > >> >> brez
> > > >> >> >> reza
> > > >> >> >> >> > > >> lahko
> > > >> >> >> >> > > >> pri vračanju
> > > >> >> >> >> > > >> kliče cilj class(X, positive/negative) ne glede na
> to,
> > > >> kakšen
> > > >> >> je
> > > >> >> >> X).
> > > >> >> >> >> > > >>
> > > >> >> >> >> > > >> V čem je torej problem, če ni reza?
> > > >> >> >> >> > > >>
> > > >> >> >> >> > > >> lpM
> > > >> >> >> >> > > >>
> > > >> >> >> >> > > >
> > > >> >> >> >> > > >
> > > >> >> >> >> > >
> > > >> >> >> >> >
> > > >> >> >> >
> > > >> >> >>
> > > >> >> >
> > > >> >>
> > > >> >
> > > >>
> > > >
> > > >
> > >
> >
>

Reply via email to