Из произвольного списка удалить все латинские буквы, расположенные между буквами d и k - Lisp

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

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

Из произвольного списка удалить все латинские буквы, расположенные между буквами d и k.

Решение задачи: «Из произвольного списка удалить все латинские буквы, расположенные между буквами d и k»

textual
Листинг программы
(defun task (lst)
  (let ((r nil))
    (iter (for x in lst)
       (let ((c (remove-if (lambda (y) (member y '(e f g h i j))) (explode x))))
         (when c (collecting (implode c) into r))) r))) 
 
 
==> task
 
(task '(a bb ee g "asdf"))
 
==> (a bb "asd")

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

В коде определена функция task, которая принимает в качестве аргумента список lst. Внутри функции создаётся пустой список r, который будет собирать результат. Затем используется цикл iter, который перебирает каждый элемент x из списка lst. Для каждого элемента x создаётся внутренняя функция let, которая определяет переменную c. Внутри внутренней функции let используется функция remove-if, которая удаляет все элементы из списка c, если они являются латинскими буквами и находятся между буквами d и k. Это определяется с помощью лямбда-функции, которая проверяет, является ли элемент y латинской буквой и не является ли он уже удаленным (это проверяется с помощью функции member, которая ищет все элементы из списка '(e f g h i j) в списке c). Если элемент проходит проверку, он добавляется в список c с помощью функции collecting, которая собирает все элементы в список r. Если элемент не проходит проверку, он пропускается. После завершения цикла iter, функция task возвращает список r.

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


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

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

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