【问题标题】:Prolog - negation in predicateProlog - 谓词中的否定
【发布时间】:2013-04-25 02:26:06
【问题描述】:

我是一个 prolog 编程作业,我无法以 prolog 形式表示以下谓词。

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

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

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

batman - 蝙蝠侠的名字 足球——这个人喜欢做什么 哥谭 - 起源城市 tikcet - 买东西做他喜欢的事 bill - preson 卖票

感谢任何帮助。

谢谢!

【问题讨论】:

    标签: prolog


    【解决方案1】:

    我看不出问题与您的列表之间的联系。

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

    第一部分在我看来是这样的:

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

    最后一部分在我看来是这样的:

    :- dynamic plays/2.
    

    这只是告诉 Prolog,plays/2 是一种事实,并且这些事实将会出现。

    然后你可以这样写查询:

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

    这看起来像是向我反映了这个问题,并且给出了预期的响应:

    Batman = batman.
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多