爱因斯坦谜语中的数值比较
Posted
技术标签:
【中文标题】爱因斯坦谜语中的数值比较【英文标题】:Numerical comparision in Einstein Riddle 【发布时间】:2021-02-21 09:37:05 【问题描述】:我的版本对学生的姓名、年龄、出身和学科感兴趣。
solve :-
length(X, 6), % there are six students
member([manuel, 19, _, _], X), % Manuel is 19 years old
member([_, 20, _, win], X), % 20 years old student studies win
...
但是有些规则我不知道如何在 Prolog 中实现。例如:
Oliver 比数学学生大两岁,但比华盛顿的学生小两岁。
如何创建一个可以比较年龄的规则?
【问题讨论】:
【参考方案1】:member([oliver,OLIVER_AGE,_,_],X) ,
member([_,MATH_AGE,_,math],X) ,
member([_,WASHINGTON_AGE,washington,_],X) ,
OLIVER_AGE is MATH_AGE + 2 ,
OLIVER_AGE is WASHINGTON_AGE - 2
【讨论】:
最好使用 CSP 运算符#=
,因为对于is/2
,右侧的参数必须全部已知。但是对于#=
,情况并非如此。以上是关于爱因斯坦谜语中的数值比较的主要内容,如果未能解决你的问题,请参考以下文章