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 >> > > >> >> > > > >> > > > >> > > >> > >
