在DrRacket中,我如何列出列表

时间:2019-06-18 03:19:39

标签: list lambda racket

基本上,我想做的只是在DrRacket“具有Lamda的中级学生”中列出列表,但是我不确定该如何处理。

我仍然是使用Racket的新手,所以至少我了解我必须使用lambda才能创建列表列表,至少这是我所知道的一种方法,但我仍然不知道该怎么办。

我想创建一个函数,当您键入

(list (list 1 2 3) (list 3 4 5) (list 6 7 8))它会计算出一些东西。

我需要知道这一点,以便我可以解决当前正在处理的问题:

  

编写一个函数(保持计数L阈值mincount),其中L是一个   (listof(listof Num)),其他参数均为​​Num。

     

此函数返回包含L中所有值的列表   至少包含至少大于阈值的最小计数值。

示例:

(keep-counts (list (list 1 1 2 5) (list 1 4 4 1) (list 6 6 4 7)) 2 2) => 
(list (list 1 4 4 1) (list 6 6 4 7))

之所以如此,是因为只有这两个列表包含至少两个大于2的值。

1 个答案:

答案 0 :(得分:1)

解决方案可以用高阶过程来表示:

(define (keep-counts lst mincount threshold)
  (filter (λ (sl)
            (>= (count (λ (e) (> e mincount))
                       sl)
                threshold))
          lst))

上面的代码指出:过滤所有大于mincount的元素数大于给定threshold的子列表。解决方案按字面意思写!

(keep-counts (list (list 1 1 2 5) (list 1 4 4 1) (list 6 6 4 7)) 2 2)
=> '((1 4 4 1) (6 6 4 7))