PROLOG通过条件获得名称
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PROLOG通过条件获得名称相关的知识,希望对你有一定的参考价值。
我坚持使用条件或查询来获得学生的姓名,其年龄必须超过“25”,教师必须是“jdoe”。
我想要一个带2个参数的条件(年龄,老师)。如:
?-find(26, jdoe).
我的Prolog代码如下所示:
/*student(name,studnumb,age,sex)*/
student(cax,1234,22,female).
student(sad,7839,26,male).
student(fads,1726,29,male).
student(rafa,1114,25,male).
student(gafrh,6654,36,female).
student(reads,4627,20,male).
student(hyqa,2563,25,female).
student(berat,9258,30,female).
find(S1, S2):-
S1 > 25,
S2 == jdoe,
write(student(, _, S1, _)).
takes(1234,1111).
takes(7839,1111).
takes(1726,1111).
takes(1114,2345).
takes(6654,1111).
takes(4627,4588).
takes(2563,2222).
takes(9258,6534).
teaches(jdoe,1111).
teaches(bbuilder,2345).
teaches(tkailor,6789).
teaches(jdough,4588).
teaches(krain,2222).
teaches(slisterine,6534).
不幸的是,我无法实现正确的查询或有条件地打印超过“25”并且具有“jdoe”作为教师的正确学生姓名组。
答案
我想下一个代码。
find(YO, TN):-
student(SN, IS, SY, SX),
(var(YO)->true
;SY > YO),
takes(IS, IT),
teaches(TN,IT),
writeln([TN,student(SN,IS,SY,SX)]),fail;true.
我尝试下一个测试代码。
main:-
find(25,jdoe),
find(20,krain).
[jdoe,student(sad,7839,26,male)]
[jdoe,student(fads,1726,29,male)]
[jdoe,student(gafrh,6654,36,female)]
[krain,student(hyqa,2563,25,female)]
以上是关于PROLOG通过条件获得名称的主要内容,如果未能解决你的问题,请参考以下文章
为啥我无法通过 Prolog 获得 Ship Puzzle 的答案?
无法使用 GNU-Emacs 在 SWI-Prolog 上编辑“Prolog 程序名称”(尝试设置劣质 Prolog 进程)