方案-两个列表之间的最大差异
Scheme- Largest difference between two lists
给定两个数字列表(长度相同),return对应数字对之间的最大差异(无需创建另一个列表)。例如...
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.
注意差异总是正的(绝对值)。
我只在OP提供代码时才提供代码所以这里是刚刚描述的解决方案。编码愉快!
您可以使用 fold-left
并提供一个过程,该过程采用累加器的最大值和正在处理的两个元素之间的差值的绝对值。
fold-left
是 R6RS name and resides in the library (rnrs lists (6))
. For a compatible approach you'll need to use SRFI-1 List Library. Here it's called fold
并且累加器是最后一个参数而不是第一个。
许多 R5RS Scheme 实现和从 Scheme 语言(如 Racket)派生的语言都有一个左折叠,名称为 foldl
。您需要检查它的文档以获取不同的参数顺序。它不是标准的一部分,因此在实现之间不可移植。我强烈建议您使用 R6RS 或 SRFI-1。
给定两个数字列表(长度相同),return对应数字对之间的最大差异(无需创建另一个列表)。例如...
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.
注意差异总是正的(绝对值)。
我只在OP提供代码时才提供代码所以这里是刚刚描述的解决方案。编码愉快!
您可以使用 fold-left
并提供一个过程,该过程采用累加器的最大值和正在处理的两个元素之间的差值的绝对值。
fold-left
是 R6RS name and resides in the library (rnrs lists (6))
. For a compatible approach you'll need to use SRFI-1 List Library. Here it's called fold
并且累加器是最后一个参数而不是第一个。
许多 R5RS Scheme 实现和从 Scheme 语言(如 Racket)派生的语言都有一个左折叠,名称为 foldl
。您需要检查它的文档以获取不同的参数顺序。它不是标准的一部分,因此在实现之间不可移植。我强烈建议您使用 R6RS 或 SRFI-1。