我如何搜索一个列表与下划线变量?(序言)



这是我的问题,我收到各种带有下划线变量的列表(例如:[_,_,A, _, _]或[_,A, B, _, _]),我需要在这些列表中搜索重要的值(在本例中为A或A and B)

这是可能的吗?还是我试图用错误的方式解决这个问题?

对于更好的背景:我试图在Prolog中制作一个cluedo类型的程序,你有你的线索,然后你从其他玩家那里获得线索,并试图找到凶手,但我想为每个嫌疑人提供一个列表(像这样[姓名,年龄,武器,个人物品]),所以你可以看到每次你得到像武器这样的线索时,我都会收到这样的列表[_,_,刀,_]

如果有人能帮助我,我将感激不尽。

致以最美好的祝愿

检查变量是否仍然是自由的方法是使用ISO谓词var/1nonvar/1,如果它们的参数是自由变量或实例化,则为true。

那么,如果你有一个绑定了一些变量的列表,你可以说:

nonvar_member(M, List) :- member(M, List), nonvar(M).

此谓词将枚举(通过回溯与M统一)List中非自由变量的元素:

?- nonvar_member(X, [2,_,_,3,A,1,_]).
X = 2 ;
X = 3 ;
X = 1 ;
false.

但总的来说,有很多例子(也在Stackoverflow上)使用Prolog来解决基于线索的谜题,所以尝试先看看那些。

最新更新