% | 1 | 2 | 3 | % | 4 | 5 | 6 | % | 7 | 8 | 9 | rook(1,2). rook(1,4). rook(2,1). rook(2,3). rook(2,5). rook(3,2). rook(3,6). rook(4,1). rook(4,5). rook(4,7). rook(5,2). rook(5,4). rook(5,6). rook(5,8). rook(6,3). rook(6,5). rook(6,9). rook(7,4). rook(7,8). rook(8,5). rook(8,7). rook(8,9). rook(9,6). rook(9,8). move_user(X,Y) :- retractall(visited(Z)), asserta(visited(X)), asserta(visited(Y)), move(X,Y). move(X,Y) :- rook(X,Y). move(X,Y) :- rook(X,Z), not(visited(Z)), asserta(visited(Z)), print(Z),nl, move(Z,Y).