这是关于逻辑编程来自计算机程序的结构和解释
这是了解如何获得最高价值的一个简单问题。
这是一个示例数据库:
((is-student Anna)
(is-student Bart)
(is-student Charlie)
(is-student David)
(is-student Eddy)
(is-student Fanny)
(has-points Anna 73)
(has-points Bart 84)
(has-points Charlie 65)
(has-points David 34)
(has-points Eddy 85)
(has-points Fanny 70))
我理解以下代码总结了学生们的观点:
;;; Query input:
(and (is-student ?student1)
(has-points ?student1 ?points1))
;;; Query results:
(and (is-student fanny) (has-points fanny 70))
(and (is-student eddy) (has-points eddy 85))
(and (is-student david) (has-points david 34))
(and (is-student charlie) (has-points charlie 65))
(and (is-student bart) (has-points bart 84))
(and (is-student anna) (has-points anna 73))
与AND&组合相同或者可以理解。它主要处理组合并过滤掉结果。
我很难理解下面的代码让学生获得最高分。它看起来很简单,但我不明白如何与AND&组合。不是& "> point2 points1"提供最大的价值(分)?
这是我运行时(在DrRacket中)获得最高分的学生所得到的:
;;; Query input:
(and (is-student ?student1)
(has-points ?student1 ?points1)
(not (and (is-student ?student2)
(has-points ?student2 ?points2)
(lisp-value > ?points2 ?points1))))
;;; Query results:
(and (is-student eddy)
(has-points eddy 85)
(not (and (is-student ?student2)
(has-points ?student2 ?points2)
(lisp-value > ?points2 85))))
如何将第二个列表的否定与第一个列表进行比较? 第一个结果的每个答案/行是否与第二个AND的每一行相比? 我不知道如何阅读/解释代码以及为什么这会给我们搜索的内容?
任何有助于了解如何提供最高价值的帮助都将受到高度赞赏!
由于
PS:我不是英语母语人士,我为任何语法错误或拼写错误道歉
答案 0 :(得分:0)
在我看来,我可以对此有一个解释:我有一个有点1 的学生1 不存在存在的情况具有point2 和 point2的point2大于point1。 粗体和,不完美匹配代码。 希望这可以帮助你,我也不是英语母语者:)