【发布时间】:2016-04-16 19:02:59
【问题描述】:
我是 Prolog 的新手。由于我学习范式编程主题,我需要每隔几周学习不同的编程。
我做了一个寻找家庭中最大和最小的孩子的练习,下面是我的知识库。
family( person(alex, fox, date(26, oct, 1970), work(ucl, wc1e)),
person(lan, fox, date(6, dec, 1971), unemployed),
[ person(adrian, fox, date(17, nov, 1996), unemployed),
person(lisa, fox, date(7, june, 2002), unemployed)
]).
family( person(james, bond, date(29, feb, 1950), work(mi6, secretLocation)),
person(girl, bond, date(01, dec, 2004), unemployed),
[]).
family( person(superman, hero, date(29, feb, 1979), unemployed),
person(superwoman, hero, date(29, feb, 1979), work(crisisSpot, anywhere)),
[ person(superbaby, hero, date(7, june, 2002), unemployed) ]).
family( person(picard, captain, date(29, feb, 2400), unemployed),
person(kirk, captain, date(29, feb, 2300), unemployed),
[ person(janeway, captain, date(29, feb, 2450), unemployed),
person(cisco, captain, date(29, feb, 2450), unemployed)
]).
我已经解决了剩下的问题,只是这个问题我尝试了几次仍然不知道,我无法理解列表中的孩子是如何工作的。任何帮助将不胜感激。
% Find eldest children in family
dateofbirth(person(_,_,Date,_), Date).
eldest(X,Y) :-
family(_,_,Kids),
member(X,Kids),
dateofbirth(X, date(_,_,Y)),
(dateofbirth(X, date(_,_,Y)).
以上是我尝试的答案,但仍然无法正常工作。
【问题讨论】:
-
什么是最年长的?这只是根据年还是日和月?
-
儿童年。感谢您的答复。根据年份找出谁是家庭中最年长或最小的孩子。