num_col(10). num_righe(10). occupata(pos(2,5)). occupata(pos(3,5)). occupata(pos(4,5)). occupata(pos(5,5)). occupata(pos(6,5)). occupata(pos(7,5)). occupata(pos(7,1)). occupata(pos(7,2)). occupata(pos(7,3)). occupata(pos(7,4)). occupata(pos(5,7)). occupata(pos(6,7)). occupata(pos(7,7)). occupata(pos(8,7)). occupata(pos(4,7)). occupata(pos(4,8)). occupata(pos(4,9)). occupata(pos(4,10)). iniziale(pos(4,2)). finale(pos(6,9)). applicabile(est,pos(R,C)) :- num_col(NC), C1, C1 is C-1, \+ occupata(pos(R,C1)). applicabile(nord,pos(R,C)) :- R>1, R1 is R-1, \+ occupata(pos(R1,C)). trasforma(est,pos(R,C),pos(R,C1)) :- C1 is C+1. trasforma(ovest,pos(R,C),pos(R,C1)) :- C1 is C-1. trasforma(sud,pos(R,C),pos(R1,C)) :- R1 is R+1. trasforma(nord,pos(R,C),pos(R1,C)) :- R1 is R-1. uguale(S,S).