我正在 Prolog 中编写一个规则来创建一个事实,pit(x,y)。下面的这条规则在我的 main 函数中被调用了 3 次,它插入了三个坑,其中没有一个在 (1,1) 或 (1,2) 或 (2,1) 但问题是有时 2 个坑具有相同的 x 和 y,其中 x 和 y 只能从 1 到 4。(4x4 网格)
placePit(_) :- Px is random(4)+1,
Py is random(4)+1,
write(Px),
write(' '),
writeln(Py),
(Px =\= 1;
Py =\= 1),
(Px =\= 1;
Py =\= 2),
(Px =\= 2;
Py =\= 1)
->
pit(Px,Py);
placePit(4).
我不希望这种情况发生,所以我写了另一个规则,首先检查 2 个坑是否相同,稍后将扩展到从数据库中删除任何一个。根据我的测试,即使 2 个坑看起来相同,它也不会被解雇。我究竟做错了什么?如何删除重复的事实?
pit(A,B) :- pit(C,D),
A = C,
B = D,
write('Duplicate').
PS。我是 Prolog 的新手。任何建议表示赞赏。