[ GluppiUsername @ 04.12.2011. 23:25 ] @
Treba da riješim sledeći zadatak: Ternarno stablo je sastavljeno od termova n(a, b, c) koji se nazivaju čvorovi, gdje su a, b, i c ili čvorovi ili cijeli brojevi. Pretpostavite da su dozvoljeni cijeli brojevi 0 i 1. Napisati PROLOG predikat koji će da vrati listu svih 0 i listu svih 1 u datom drvetu. Na primjer, enum(n(n(0, 1, 0), 1, 0), X, Y) treba da postavi X na [0, 0, 0], a Y na [1, 1]. Obavezno koristiti dvije liste. Imam ovakvu odeju: Code: enum(null, [], []). enum(n(A,_,_), X, Y) :- A == 0, !, cons(0,X,X), enum(A,X,Y). enum(n(A,_,_), X, Y) :- cons(1,Y,Y), enum(A,X,Y). /* cons(X, Xs, L) */ /* L je lista koja nastaje dodavanjem elementa X na pocetak liste Xs */ cons(X, [], [X]). cons(X, Xs, [X|Xs]). I ovako redom za svaku od preostale tri pozicije n(_,A,_) i n(_,_,A). Ali problem je što ne radi ni za najednostavnije upite tipa : enum(n(0,0,0), X, Y). |