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

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

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

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

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

textual
Листинг программы
  1. (defun task (lst)
  2.   (let ((r nil))
  3.     (iter (for x in lst)
  4.        (let ((c (remove-if (lambda (y) (member y '(e f g h i j))) (explode x))))
  5.          (when c (collecting (implode c) into r))) r)))
  6.  
  7.  
  8. ==> task
  9.  
  10. (task '(a bb ee g "asdf"))
  11.  
  12. ==> (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

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

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

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