我在努力解决骑士之旅的问题。我想调用一个规则来评估可能的移动,但是我不能这样做,我的规则返回我发送的变量中的下一个位置。
move(X,Y):-
X is X+1,
Y is Y-2.
move(X,Y):-
X is X+2,
Y is Y-1.
例如,在控制台中我发送了move(2,2),我希望返回3,0和4,1,但返回false。
我是Prolog中的一个新程序员,我尝试做一个程序,上面写着:让谓词penta(X),其中X是一个列表,当在X中有5个连续的元素时,返回true:第一个元素是第一个和第二个元素之间的和。另外,第三个元素是第5个元素和第4个元素之间的差异,例如:X = [ ... 5, 7, 12, 18, 30, ... ]。
所以我做了这个:
penta(X) :-
\+length(X,0), //here i verify if the lists contains less than 5 elements so it gives false.
\+length(X,1),
\+length(X,2