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

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

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

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

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

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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы