繁体   English   中英

球拍/方案中的摘要列表功能

[英]Abstract List Functions in Racket/Scheme

我完全陷入了编写不使用递归,本地或lambda函数的问题。 只能使用抽象列表功能。 该函数必须输入一个正整数列表,并输出那些整数中严格大于1的整数。即,所有大于1的整数的列表长度

有关如何执行此操作的任何想法? 我从未实现过抽象列表函数,也不确定在这种情况下将使用哪个列表列表函数。

另外,语言设置为“中级学生”,不更高。 这就是为什么不能使用lambda和其他功能的原因。

给定语言限制,我们可以使用foldl做到这一点:

(define lst '(-4 -3 -2 -1 0 1 2 3 4 5))

(define (adder e acc)
  (if (> e 1) (add1 acc) acc))

(foldl adder 0 lst)
=> 4

如果不是为了限制,在Racket中有一种更简单的方法:

(count (lambda (x) (> x 1)) lst)
=> 4

在这种情况下,使用的抽象列表功能是count ,有关更多可用功能,请参见文档。

这符合您的限制吗? 从每个数字中减去一个,过滤掉正数,然后取结果列表的长度:

(define (f lst)
  (length (filter positive? (map sub1 lst))))

> (f '(1 2 3 4 5 0 -1 -2 -3 -4))
4

在中级学生中工作正常。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM