Verjetno zato, ker pobere prvega. To je +. Se motim?
2008/6/22 Miha Cerar <[EMAIL PROTECTED]>: > 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 > > > > >> >> >> >> > > >> > > > > >> >> >> >> > > > > > > > >> >> >> >> > > > > > > > >> >> >> >> > > > > > > >> >> >> >> > > > > > >> >> >> > > > > > >> >> >> > > > > >> >> > > > > > >> >> > > > > >> > > > > > >> > > > > > > > > > > > > > > > > > > > >
