これは宿題の問題ですが、私は単純な質問に答えるだけです。私は騎士がその位置からチェス盤に飛びつく可能性のあるすべての方法を印刷することになっています。正しい数値が得られていますが、正しい出力が得られないようです。たとえば:変数がプロローグで印刷される順序を変更する方法は?
?- knight(8,1,R,C)
は、次のように出力をプリントアウトすることになっている:
C = 3
R = 7;
C = 2
R = 6;
しかし、私はのように正反対の取得:
R = 7,
C = 3;
R = 6,
C = 2.
ここに私のコードです:
knight(C, R, C2, R2):-
C2 is C - 1,R2 is R + 2,
withinBoard(C2,R2)
; C2 is C + 1,R2 is R + 2,
withinBoard(C2,R2)
; C2 is C + 2, R2 is R + 1,
withinBoard(C2,R2)
; C2 is C + 2, R2 is R - 1,
withinBoard(C2,R2)
; C2 is C + 1, R2 is R - 2,
withinBoard(C2,R2)
; C2 is C - 1, R2 is R - 2,
withinBoard(C2,R2)
; C2 is C - 2, R2 is R - 1,
withinBoard(C2,R2)
; C2 is C - 2, R2 is R + 1,
withinBoard(C2,R2).
withinBoard(Col,Row):-
Row < 9, Row > 0, Col < 9, Col > 0.