Prolog 序言-不确定书籍的规则

Prolog 序言-不确定书籍的规则,prolog,Prolog,我真的不知道该怎么处理这些规则,我讨厌序言,我所做的就是,我列出了事实 使用结构化数据对象表示书本。描述一个事件的信息 这本书是: 头衔 作者 体裁 页数 体裁应该是以下类型之一{犯罪、戏剧、喜剧、研究、小说、, 参考} 您可以将图书馆表示为书籍列表。 编写一套推荐书的规则,用于: 假期(这本书应该少于400页,不能作为研究或参考 书) 修订版(用于学习的书或300本以上的参考书) 页数) 文学阅读(戏剧书籍) 休闲(喜剧或小说类书籍) 事实: 书(哈姆雷特,莎士比亚,戏剧,300)

我真的不知道该怎么处理这些规则,我讨厌序言,我所做的就是,我列出了事实

使用结构化数据对象表示书本。描述一个事件的信息 这本书是:

  • 头衔
  • 作者
  • 体裁
  • 页数
体裁应该是以下类型之一{犯罪、戏剧、喜剧、研究、小说、, 参考}

您可以将图书馆表示为书籍列表。 编写一套推荐书的规则,用于:

  • 假期(这本书应该少于400页,不能作为研究或参考 书)
  • 修订版(用于学习的书或300本以上的参考书) 页数)
  • 文学阅读(戏剧书籍)
  • 休闲(喜剧或小说类书籍)
事实:

  • 书(哈姆雷特,莎士比亚,戏剧,300)
  • 书(地图,现场视察,参考,100)
  • 书(犯罪现场调查,杰瑞,犯罪,80)
  • 书(主持人,费雷尔,喜剧,200)
  • 书籍(java、jomo、study,400)
  • 书(圣经,耶稣,小说,600)

规则:这就是我要问的所有问题,例如,对于假期,第一条规则的代码应该是:holidayPages(400,Y):-book(u,u,Y),400chac已经铺平了道路。序言规则的形式如下:

Head :- Body.
对于头部,您可以选择化合物或原子。身体可以是 Prolog查询。查询基本上由以下内容构建:

- Invocations: Call some other rules with bound or unbound arguments
- Conditions: Unification =, Arithmetic =:=, <, etc.. Lexical @<, ==, etc..
- Connectives: And ,, Or ;, Not \+ etc..
- Everything else that is found in the handbook of your Prolog system.
我得到:

Main invocation: book(Title, Author, Genre, Pages)
Condition_1: Pages < 400
Condition_2: Genre = study
Condition_3: Genre = reference
Connectives: Condition_1, \+ (Condition_2 ; Condition_3)
Main调用:书(标题、作者、类型、页面)
条件_1:页数<400
条件2:体裁=研究
条件3:类型=参考
连接词:条件1,\+(条件2;条件3)
如果我把这些放在一起,我会得到下面的身体,你可以很容易地 作为查询的顶级中的第一个测试:

?- book(Title, Author, Genere, Pages), Pages < 400, \+ (Genre = study; Genre = reference).
?-书(标题、作者、一般、页数),页数<400,\+(体裁=研究;体裁=参考)。
现在你可以把它变成一条规则。请注意,在下列情况下使用下划线(u) 未使用的调用变量,否则Prolog系统会用 单身人士警告:

holidays(Title) :- 
     book(Title, _, Genre, Pages), 
     Pages < 400, 
     \+ (Genre = study; Genre = reference).
假日(标题):-
书(标题、类型、页数),
小于400页,
\+(体裁=研究;体裁=参考)。
这是一个很好的家庭作业,你有一个好老师。玩得开心


再见,有什么问题吗?如何做到这一切?您似乎需要一些基本的prolog示例。当您习惯于prolog时,所有这些都非常简单。我建议你从一个简单的谓词(例如
文学的
)和其他简单的序言例子开始整理。现在我喜欢
书(圣经,耶稣,小说,600)。
,哈哈。无论如何,试试
假日(B):-B=book(T,A,G,P),P<400,G\=学习,等等。
holidays(Title) :- 
     book(Title, _, Genre, Pages), 
     Pages < 400, 
     \+ (Genre = study; Genre = reference).