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