0

写一个 predicate cmp_list/3,前 2 个参数是 2 个列表,最后一个是Comparisonwhich 表示ge, lt, le, or gt
ge: 大于等于
lt: 小于
le: 小于等于
gt: 大于
输出应该是这样的:
前两个列表代表一个软件的版本,该函数用于比较一个软件的两个版本,看哪个版本更新:

?- cmp_list([2,3,4], [2,3,5], C).
C = lt ;
C = le .

?- cmp_list([1,2,3,4], [1,1,8], C).
C = gt ;
C = ge .
4

1 回答 1

0

这闻起来像家庭作业,所以我只给你一些提示。

  • 如果两个列表都为空,则它们相等(lege)。
  • 如果第一个列表为空,则[], [V|Vt], ...比较时可能会出现递归结束,例如 1.2 和 1.2.3,因此第三个参数应该是lt.
  • 同样,如果第二个列表为空,则第三个参数应该是gt
  • 如果两者都不为空,则应比较磁头。如果它们不同,请回答gtlt相应地回答。如果它们相等,则在尾部递归。
于 2012-07-23T21:33:56.590 回答