我實現跳棋在SWI-Prolog的,並創建了一個檢查,如果給定的舉動是合法的謂詞:Prolog的等價算
check_piece_move(white, X/Y, NewX/NewY) :-
AcceptedX1 is X+1, AcceptedX2 is X-1, % white can move to either next or previous column
AcceptedY is Y+1, % and one row upwards
(AcceptedX1 == NewX; AcceptedX2 == NewX), % make sure NewX is acceptable
AcceptedY == NewY. % make sure NewY is acceptable
此斷言效果很好,如果我足夠提前的所有變量(即給X/Y和NewX/NewY)。不過,我現在希望它執行相反的事情 - 給定X/Y,它將滿足NewX/NewY的可能性。 我能做些什麼改變? 謝謝。
你怎麼知道什麼是可以接受的?不立即從您的問題或您的代碼清除。你有紙板尺寸嗎? – 2016-10-04 06:33:54