方案 - 两个清单之间的最大差异

时间:2015-05-05 12:00:08

标签: scheme

给定两个数字列表(长度相同),返回相应数字对之间的最大差异(不创建另一个列表)。例如......

Given [ 2 6 3 ] and [ 4 6 2 ],
their differences are [ (2-4) (6-6) (3-2) ], or [ 2 0 1 ],
so the largest difference is 2.

请注意,差异始终为正(绝对值)。

1 个答案:

答案 0 :(得分:2)

我只在OP提供代码时提供代码,所以这里是刚才描述的解决方案。快乐的编码!

您可以使用fold-left并提供一个过程,该过程采用最大累加器和正在处理的两个元素之间的差异的绝对值。

fold-leftR6RS name,位于库(rnrs lists (6))中。对于兼容的方法,您需要使用SRFI-1 List Library。这里称为fold,累加器是最后一个参数而不是第一个参数。

许多R5RS Scheme实现和从Scheme语言(如Racket)派生的语言都有一个由名称foldl实现的左侧折叠。您需要检查它的文档以获取参数顺序,因为它们会有所不同。它不是标准的一部分,因此在实现之间不可移植。我劝你要么使用R6RS,要么使用SRFI-1。