В DrRacket как мне составить список списков - PullRequest
0 голосов
/ 18 июня 2019

По сути, все, что я пытаюсь сделать, это составить список списков в DrRacket 'Intermediate Student with Lamda', но я не уверен, как к этому приблизиться.

Я все еще новичок в использовании Racket, поэтому япо крайней мере, я понимаю, что я должен использовать лямбду, чтобы создать список, по крайней мере, это один из известных мне методов, но я все еще не знаю, что делать.

Я хочу сделатьфункция, которая, когда вы набираете

(list (list 1 2 3) (list 3 4 5) (list 6 7 8)), будет что-то вычислять.

Мне нужно это знать, чтобы я могла решить вопрос, над которым я сейчас работаю, и который будет следующим:

Напишите функцию (keep-countts L threshold mincount), где L - это (listof (listof Num)), а остальные параметры - Num.

Эта функция возвращает список, содержащий все значения в L, которые содержат как минимум значения mincount, превышающие пороговое значение.

Пример:

(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 Ответ

1 голос
/ 18 июня 2019

Решение может быть выражено в терминах процедур более высокого порядка:

(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))
...