Prolog:用较少的陈述陈述更多事实

时间:2013-12-10 21:12:50

标签: prolog

我在Prolog中遇到问题,我真的需要帮助。

有人(男性和女性)并且他们有预示:

  • 名称
  • 性别
  • 年龄
  • 重量
  • 发色
  • 最喜欢的歌曲
  • 最喜欢的运动
  • 最喜欢的书

我需要陈述一个人的这些事实,但我不应该陈述超过3个事实! 有人能帮助我吗?

1 个答案:

答案 0 :(得分:3)

这是一个简单的方法:

person(PersonName, Gender, Age, Weight, HairColor).
favorite(PersonName, Song, Sport, Book).

你没有理由将自己局限于arity-1或-2事实。您可以像设计关系数据库一样设计Prolog事实数据库。无论如何,Prolog会自动索引事实的第一个术语,所以尽管有明显的搜索,但要将其作为候选键并观察,因为你的程序表现良好。 :)

修改:说明一些问题:

person(maria, female, 28, 61, blond).

有没有名叫Maria的人?

?- person(maria, _, _, _, _).
yes.

玛丽亚最喜欢的运动是什么?

?- favorite(maria, _, Sport, _).
Sport = tennis ;
no.

等。有关详细信息,请参阅下面的@ mbratch评论。