malo poglej program.... ;) tist assert(d(X)) je totalno nelogicen... saj
assertas argument katerega isces... tu more biti assertan pac rep od
seznama.
tako da delujoca verzija tega programa je naslednja:

imember(X, L):-
   L \== [],
   assert(d(L)),
   repeat,
       retract(d([H|T])),
       (X = H;
        T = [], !, fail;
        assert(d(T)), fail).

---------- Forwarded message ----------
From: Rok Carl <[EMAIL PROTECTED]>
Date: 2008/6/17
Subject: Re: [Friclist] PPJ
To: FRIClist <[email protected]>


A razume mogoče kdo tole prolog nalogo (na enem izpitu je bla):
2) iterativni INC - povečati za 1 vsak element seznama.

Zdej v vajah sm našu eno rešitev za iterativni member, ampak ne dela, kot bi
mogla, tud če v vrstici "T = [], !, fail;" znak in (,) zamenjate za ali (;).

imember(X, L):-
   L \== [],
   assert(d(L)),
   repeat,
       retract(d([H|T])),
       (X = H;
        T = [], !, fail;
        assert(d(X)), fail).

Mislim, kapiram ta iterativni koncept, sam problem že pr tej implementaciji
je, kok se boš premiku po array-u. Ta ti bo namreč na imember(a, [a,b,b])
reku yes (tak ko treba), na imember(a, [b,a,b]) pa no.
Komu jasno?



-- 
Lp,

Jernej

Reply via email to