【问题标题】: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 比数学学生大两岁,但比华盛顿的学生小两岁。

如何创建一个可以比较年龄的规则?

【问题讨论】:

    标签: prolog zebra-puzzle


    【解决方案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,右侧的参数必须全部已知。但是对于#=,情况并非如此。
    猜你喜欢
    • 2011-05-24
    • 2016-08-17
    • 1970-01-01
    • 2016-08-13
    • 2016-12-20
    • 1970-01-01
    • 2018-01-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多