【问题标题】:Please i am new in prolog can some body help me in this exercice请我是序言的新手,有人可以在这个练习中帮助我吗
【发布时间】:2014-01-08 23:57:37
【问题描述】:

写一个谓词less/2,这样如果t1代表n1,t2代表n2,那么 less(t1, t2) 成功当且仅当 n1 less(s(z), s(s(s(z)))) 应该 成功,less(s(z), s(z)) 应该失败。如果 t1 是一个未实例化的逻辑变量, 而 t2 是自然数 n2 的适当表示,则谓词 应该枚举所有小于 n2 的数字。例如查询

?- less(X, s(s(z))).

应该以X = zX = s(z) 成功(不一定按此顺序)。

【问题讨论】:

标签: prolog successor-arithmetics


【解决方案1】:

您可以尝试以下方法:

ls(0,s(_)).
ls(s(X),s(Y)) :- ls(X,Y).

以下是一些运行示例:

?- ls(s(0),s(s(s(0)))).
Yes
?- ls(s(s(0)),s(0)).
No

再见

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-01
    • 1970-01-01
    • 2021-02-12
    • 2022-06-13
    • 1970-01-01
    • 2022-06-16
    • 2020-03-25
    • 1970-01-01
    相关资源
    最近更新 更多