/*2. Napisati Prolog predikat d_u_b_z(X) koji u bazu znanja dodaje injenice oblika teg(X), pri emu X mora biti ceo broj (potrebno je izvršiti proveru pre dodavanja u bazu znanja). Napisati predikat izmeri(Y) koji za celobrojnu težinu prikazuje merenje te težine na apotekarskoj vagi sa tegovima koji su na raspolaganju (tj. u bazi znanja). Pri tome tegovi mogu postavljati na oba tasa vage.*/ dubz(X) :- integer(X) , assert(teg(X)). napraviListu([]) :- not(teg(X)). napraviListu([G|R]) :- teg(G) , retract(teg(G)) , napraviListu(R). izmeri(Y) :- napraviListu(T) , podlista(T,L) , meri(Y,L). meri(0,[]). meri(Y,[G|R]) :- (X is Y-G , (X=:=0 ; meri(X,R)) , write('na desnom tasu ') , write(G) , nl) ; (X is Y+G , (X=:=0 ; meri(X,R)) , write('na levom tasu ') , write(G) , nl). podlista(L,Res):- rastavi(L,Res,_). rastavi([],[],[]). rastavi([G|R],[G|R1],R2):-rastavi(R,R1,R2). rastavi([G|R],R1,[G|R2]):-rastavi(R,R1,R2). %NAPOMENA: prvo sa dubz(X) dodati tegove, a onda pozvati izmeri(Y) za %trazenu tezinu, ako se zeli jos neka tezina testirati mora se ponovo sa dubz %dodati isti tegovi (ili neki drugi) tj. tegovi pamti samo za jedno pozivanje izmeri(Y) %tegovi se koriste samo jednom jer inace imamo mogucnost beskonacnog %dodavanja tegova na jeda nili drugi tas %alternativa je bila da se uvede drugi predikat teg(X,N) kao sto ste vi predlagali