在序言中“或”程序(“Or” procedure in prolog)

2019-09-03 18:50发布

我做了一个大学的Prolog程序就是有点像妙探寻凶游戏。 我有六个嫌疑人不同的特质:

suspect(Name, Age, Weapon, Shape, Object, Shoes)

我们的目标是使该计划说,所有的六名嫌犯的不同性状实施一系列的线索。 例如:

suspect(Hannibal Lecter,67,knife,'in good shape',mac,'high heels')

我有问题,试图执行线索

or(suspect1, suspect2, suspect3, listOfSuspects)

这个线索应该说, suspect1具有相同的特征为suspect2 OR为suspect3但不能同时使用。 例如:为了表明谁是50岁的犯罪嫌疑人有一个环或MAC,但不能同时:

or(suspect(_, 50, _, _, _, _),
   suspect(_, _, _, _, ring, _),
   suspect(_, _, _, _, mac, _), listOfSuspects).

任何帮助,将不胜感激。

Answer 1:

下面是一些提示。 你可以说Suspect1具有相同的特征为Suspect2只是Suspect1 = Suspect2 ,并找出一个列表的任何成员是否Suspects具有的特点Suspect1member(Suspect1, Suspects)

的处理中的Prolog的析取的常用方法是通过引入谓词与两项条文。 例如,谓词,检查可疑是否具有任一环或MAC是

ring_or_mac(suspect(_, _, _, _, ring, _)).
ring_or_mac(suspect(_, _, _, _, mac, _)).

如果你以正确的方式把这些线索在一起,你有一个解决您的问题。



文章来源: “Or” procedure in prolog
标签: list prolog