【发布时间】:2013-05-01 06:22:28
【问题描述】:
我是 Prolog 的新手,我想编写一个可以在蜂窝空间上进行一些计算的程序。 首先,我根据一些事实定义了细胞空间:
board_size(3).
cell(0,0,0).
cell(0,1,0).
cell(0,2,0).
cell(1,0,0).
cell(1,1,0).
cell(1,2,0).
cell(2,0,0).
cell(2,1,0).
cell(2,2,0).
cell(X,Y,Z) 表示位置(X,Y) 和值Z 的单元格。
为了找到另一个单元格的顶部单元格,我编写了以下规则:
top(cell(X1,Y1,_),cell(X2,Y1,_)) :- board_size(Size), X1 is (X2-1) mod Size.
最后我通过一些查询测试了我的代码:
1 ?- top(cell(0,0,0),cell(1,0,0)).
true.
2 ?- top(cell(0,0,0),cell(X,0,0)).
ERROR: is/2: Arguments are not sufficiently instantiated
这个错误的原因是什么?
【问题讨论】: