【问题标题】:Prolog - a predicate to compare three argumentsProlog - 比较三个参数的谓词
【发布时间】:2018-01-22 07:30:45
【问题描述】:

我是 prolog 的新手,我已经完成了一些编码,但是我有一个我无法处理的任务。您能否告诉我如何描述一个有效的谓词,它比较 arg1、arg2 和 arg3 并返回是它 arg1>arg2>arg3?非常感谢!

西门

【问题讨论】:

  • “返回是”我假设你的意思是它成功(这不是,技术上“返回一个值”)。从compare3(X, Y, Z) :- ... 开始并根据以下语句确定... 是什么:*X` > Y > Z if ...*。多说的话就是为你做你所有的工作。 :p

标签: prolog logic implication


【解决方案1】:

解决方法很简单:

compare3(X, Y, Z):-
    X>Y,
    Y>Z.

?- compare3(5,4,3).
true.

请记住,您不能使用任意数量的输入参数来定义谓词(显然compare/3 只能使用 3 个输入来调用)。为了使其更灵活,您可以将元素插入列表并像这样重写它

myCompare([]).
myCompare([_]):- !.
myCompare([A,B|T]):-
    A>B,
    myCompare([B|T]).

?- myCompare([5,4,3]).
true.

现在myCompare/1 接受一个列表,如果列表已排序则返回 true,否则返回 false。

【讨论】:

  • 我希望在我上学的时候周围有人免费为我做作业。 ;)
  • @lurker 我还在上大学,我也希望有人免费做我的项目 ;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多