Prolog - 谓词否定

时间:2013-04-25 02:26:06

标签: prolog

我是一个prolog编程任务,我不能用prolog形式表示以下谓词。

蝙蝠侠喜欢看足球并从比尔那里买票,在空闲时间从不打曲棍球或板球。

我无法以列表格式编写谓词的否定部分。列表是表格。

member([batman,soccer,gotham,tikcet,bill],Listname)

蝙蝠侠 - 蝙蝠侠的名字 足球 - 这个人喜欢做什么 gotham - 原产地 tikcet - 购买他喜欢的东西 bill - preson卖票

感谢任何帮助。

谢谢!

1 个答案:

答案 0 :(得分:0)

我没有看到问题与您的列表之间的关联。

  

蝙蝠侠喜欢看足球并从比尔那里买票,但在空闲时间从不打曲棍球或板球。

第一部分看起来像这样:

loves(batman, watching(soccer)).
buys(batman, tickets, bill).

最后一部分看起来像这样:

:- dynamic plays/2.

这只是告诉Prolog,戏剧/ 2是一种事实,这些事实即将到来。

然后您可以这样编写查询:

?- loves(Batman, watching(soccer)), 
   buys(Batman, tickets, bill), 
   \+ plays(Batman, hockey),
   \+ plays(Batman, cricket).

这似乎反映了我的问题,它给出了预期的回应:

Batman = batman.