list - 在 Scheme 中生成一个倍数列表

标签 list scheme racket

如果我有一个包含 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/

相关文章:

R 按索引(日期)对多个数据帧的列表求和

c# - 如何根据仅包含已更改索引的列表修改列表索引?

计划开源项目?

list - Racket/Scheme 中的抽象列表函数 - 列表中元素出现的次数

python - 使用列表 Python 映射列数据框

c++ - 来自 STL 的 vector 与列表 - 删除方法

clojure:没有cons细胞

racket - 使用带有自定义结构的内置数学运算符

macros - 在 Racket 类函数中使用点表示法

scheme - 编写一个返回字符串中单词出现频率的函数