list - 编写一个函数,它吃一个 Nat 并返回一个 (listof Nat),其中包含 1 和 n 之间的数字,这些数字可以被 2、3 和 5 中的一个整除
问题描述
编写一个函数 (fff n),它使用一个 Nat 并返回一个 (listof Nat),其中包含 1 和 n 之间的所有数字,这些数字恰好可以被 2、3 和 5 中的一个整除。
当 n = 10 时,可被这些值中的至少一个整除的数字是 {2,3,4,5,6,8,9,10}。
但是 6 和 10 可以被其中两个数整除。所以 (fff 10) => (列表 2 3 4 5 8 9)
到目前为止我所拥有的是
;; q2
;;(divisible? n d) returns true if no remainder exists when d is divided by n
;;divisible?: Nat-> Num
;;Examples
(check-expect (divisible? 8 4) #true )
(define (divisible? n d) (= 0 (remainder n d)))
;;
(define (multiple-235? n)
(cond
((divisible? n 2) #true)
((divisible? n 3) #true)
((divisible? n 5) #true)))
我不确定如何设置要检查的 1 到 n 的范围,我也不确定如何过滤列表以仅包含可被 2、3 或 5 整除的值。如何将其设置为仅能被其中之一整除。
解决方案
Just use filter and fix your multiple-235?
using PetSerAl's approach (or use his solution):
(define (multiple-235? n)
(= 1 (count (λ (d) (divisible? n d))
'(2 3 5))))
(define (fff n)
(filter multiple-235? (range 1 (add1 n))))
推荐阅读
- python - 将表转换为聚合表
- nativescript - nativescript sidedrawer 不起作用
- c++ - 使用 Visual Studio 在控制台中输出 utf8(宽流)
- xml - 从 Oracle 层次表创建 XML
- html - b-form-input 不接受正常 HTML 输入中的最小数字
- ios - Swift 4 AVcapturesession 不调用 captureOutput 委托
- jenkins - maven PMD插件生成xml格式错误的xml
- python - 错误:Python Range 对象不可调用
- python - 将图像写入文件夹
- linux - 我们如何识别文件中与特定关键字或终端中的字符串匹配的行号?