1

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

甚至有可能还是我试图以错误的方式解决这个问题。

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

如果有人可以提供帮助,我将不胜感激

最好的祝福

4

1 回答 1

1

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

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

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 来解决基于线索的谜题,所以试着先看看那些。

于 2013-05-17T04:23:18.290 回答