Imam facts (ne znam kako je na srpskom): leftchild(X, Y) i rightchild(X, Y) koje upisujem.
Potrebno je odrediti pravila za:
justabove(X, Y) - X je odmah iznad Y
above(X, Y) - X je bilo gde iznad Y
root(X) - X je u korenu stabla
leaf(X) - X nema ni jednu granu (list drveta)
equaldepth(X,Y) - da li X i Y imaju istu dubinu (root ima dubinu nula)
depth(X, D) - D je dubina X-a
prva dva imam uradjena:
Code:
justabove(X,Y) :- leftchild(Y,X).
justabove(X,Y) :- rightchild(Y,X).
above(X, Y) :- justabove(X, Y).
above(X,Y) :- justabove(Z,Y) , above(X,Z).
justabove(X,Y) :- leftchild(Y,X).
justabove(X,Y) :- rightchild(Y,X).
above(X, Y) :- justabove(X, Y).
above(X,Y) :- justabove(Z,Y) , above(X,Z).
Medjutim, root mi ne uspeva. Mislim da kada bih znao kako root bih znao i ostalo ali sam jako kratak sa vremenom (10ak sati) pa ako je neko voljan da pomogne, zamolio bih za sve preostale, za svaki slucaj.
Izgledalo mi je logicno root(X) :- above(X, Y) jer mi deluje da je to ekvialent za "za svako Y, X je iznad njega, ali e radi (vraca true i za one koji nisu root). Ocigledno moje (povrsno) znanje prologa nije dovoljno za ovo.
Hvala unapred.
PS. Ako mi istekne ovaj rok, ipak bih voleo da vidim resenje, tako da tema ne zastareva. :)