Задача о списке - Lisp

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

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

Написать функцию которая возвращает Т, если в списке символ А встречается более трех раз

Решение задачи: «Задача о списке»

textual
Листинг программы
(defun task (lst)
  (< 3 (length (remove-if-not (lambda (x) (eq x 'a)) lst)))) 
 
==> task
 
(task '(a b c d))
 
==> NIL
 
(task '(a b c d a a))
 
==> NIL
 
(task '(a b c a d a a))
 
==> T

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

В коде определена функция task, которая принимает в качестве аргумента список lst. Внутри функции происходит следующее:

  1. Вычисляется длина списка lst с помощью функции length.
  2. Используя функцию remove-if-not и лямбда-функцию, из списка lst удаляются все элементы, которые не равны символу 'a'.
  3. Код проверяет, что полученный после удаления список имеет длину меньше или равную 3. Если это условие выполняется, то возвращается NIL, в противном случае возвращается T. Примеры вызовов функции task показывают, что она корректно работает с списками, содержащими символ 'a'.

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


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

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

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