如果我有一个包含 n 个数字的列表,并且想要生成一个新列表,那么只生成同列表中任何其他数字的倍数的数字。
例如,对于此列表:'(2 4 5 7 10)
结果应为列表 '(4 10)
。
最佳答案
如果我们把问题分成几个部分会更容易。首先,让我们定义对我们来说是一个倍数意味着什么,并编写一个实现我们的定义的过程:
(define (is-multiple? num x)
(and (not (= num x))
(zero? (modulo num x))))
现在,让我们应用现有过程来迭代我们的输入并找到答案:
(define (only-multiples lst)
(filter (lambda (num)
(ormap (curry is-multiple? num) lst))
lst))
它按预期工作:
(only-multiples '(2 4 5 7 10))
=> '(4 10)
关于list - 在 Scheme 中生成一个倍数列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32400925/