Удалить из данного списка списков все, длина которых больше заданного числа, с помощью REMOVE-IF[-NOT] - Lisp

Узнай цену своей работы

Формулировка задачи:

Удалить из данного списка списков все, длина которых больше заданного числа, с помощью REMOVE-IF[-NOT].

Решение задачи: «Удалить из данного списка списков все, длина которых больше заданного числа, с помощью REMOVE-IF[-NOT]»

textual
Листинг программы
(defun task (lst n)
  (remove-if #'(lambda (x) (> (length x) n)) lst))
 
==> task
 
(task '((1) (1 2) (1 2 3) (1 2 3 4) (5 6) (7 8) nil) 3)
 
==> ((1) (1 2) (1 2 3) (5 6) (7 8) NIL)

Объяснение кода листинга программы

В коде определена функция с именем task. Она принимает два аргумента: lst — список списков, и n — число. Функция использует функцию remove-if с лямбда-выражением в качестве аргумента. Лямбда-выражение (#'(lambda (x) (> (length x) n))) определяет условие удаления: если длина списка больше n, то список удаляется. В качестве списка для удаления используется lst. Результатом работы функции является новый список без длинных списков. На примере ((1) (1 2) (1 2 3) (1 2 3 4) (5 6) (7 8) nil) и n=3, результатом будет ((1) (1 2) (1 2 3) (5 6) (7 8) nil).

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 3.462 из 5
Похожие ответы