使构建列表从特定点开始
make build-list start from a specific point
所以我正在学习使用buid-list
所以我写了一个函数:
(define (count-from n k)
(filter (lambda (n) (not(zero? n))) (build-list k (lambda (n) (add1 n)))))
按照惯例构建列表从0开始,我想出了如何排除零,
但我坚持的是如何让构建列表从特定点开始
喜欢 (count-from 7 10) 产生 (list 7 8 9 10) 而不是从 1 开始。
注意:我不想使用任何递归或辅助函数...我想知道我是否可以仅通过构建列表和 lambda 实现我所寻求的。
所以我设法弄明白了,所以对于任何想知道的人,这就是我所做的:
(define (count-from n k)
(filter (lambda (y) (>= y n)) (filter (lambda (n) (not(zero? n)))
(build-list k (lambda (n) (add1 n))))))
可以写一个更简单的解决方案,像这样:
(define (count-from n k)
(build-list (add1 (- k n))
(lambda (i) (+ i n))))
例如:
(count-from 7 10)
=> '(7 8 9 10)
所以我正在学习使用buid-list
所以我写了一个函数:
(define (count-from n k)
(filter (lambda (n) (not(zero? n))) (build-list k (lambda (n) (add1 n)))))
按照惯例构建列表从0开始,我想出了如何排除零, 但我坚持的是如何让构建列表从特定点开始 喜欢 (count-from 7 10) 产生 (list 7 8 9 10) 而不是从 1 开始。
注意:我不想使用任何递归或辅助函数...我想知道我是否可以仅通过构建列表和 lambda 实现我所寻求的。
所以我设法弄明白了,所以对于任何想知道的人,这就是我所做的:
(define (count-from n k)
(filter (lambda (y) (>= y n)) (filter (lambda (n) (not(zero? n)))
(build-list k (lambda (n) (add1 n))))))
可以写一个更简单的解决方案,像这样:
(define (count-from n k)
(build-list (add1 (- k n))
(lambda (i) (+ i n))))
例如:
(count-from 7 10)
=> '(7 8 9 10)