Witam serdecznie, muszę napisać program w Prologu rozwiązujący problem konika szachowego.
Konik musi odwiedzić każde pole, ale na każdym polu może stanąć tylko 1 raz.
Na razie mam tyle (kod poniżej), teraz powinienem skorzystać chyba z listy, żeby zapamiętać na których polach konik już był, ale właśnie mam z tym problem.
move(X, Y, Xmax, Ymax) :-
X + 1 < Xmax,
Y + 2 < Ymax,
A is X + 1,
B is Y + 2,
write('X='), write(A),
write('Y='), write(B), nl,
move(A, B, Xmax, Ymax).
move(X, Y, Xmax, Ymax) :-
X + 2 < Xmax,
Y + 1 < Ymax,
A is X + 2,
B is Y + 1,
write('X='), write(A),
write('Y='), write(B), nl,
move(A, B, Xmax, Ymax).
move(X, Y, Xmax, Ymax) :-
X + 2 < Xmax,
Y - 1 >= 0,
A is X + 2,
B is Y - 1,
write('X='), write(A),
write('Y='), write(B), nl,
move(A, B, Xmax, Ymax).
move(X, Y, Xmax, Ymax) :-
X + 1 < Xmax,
Y - 2 >= 0,
A is X + 1,
B is Y - 2,
write('X='), write(A),
write('Y='), write(B), nl,
move(A, B, Xmax, Ymax).
move(X, Y, Xmax, Ymax) :-
X - 1 >= 0,
Y - 2 >= 0,
A is X - 1,
B is Y - 2,
write('X='), write(A),
write('Y='), write(B), nl,
move(A, B, Xmax, Ymax).
move[X, Y, Xmax, Ymax) :-
X - 2 >= 0,
Y - 1 >= 0,
A is X - 2,
B is Y - 1,
write('X='), write(A),
write('Y='), write(B), nl,
move(A, B, Xmax, Ymax).
move(X, Y, Xmax, Ymax) :-
X - 2 >= 0,
Y + 1 < Ymax,
A is X - 2,
B is Y + 1,
write('X='), write(A),
write('Y='), write(B), nl,
move(A, B, Xmax, Ymax).
move(X, Y, Xmax, Ymax) :-
X - 1 >= 0,
Y + 2 < Ymax,
A is X - 1,
B is Y + 2,
write('X='), write(A),
write('Y='), write(B), nl,
move(A, B, Xmax, Ymax).