Замена слов - Lisp
Формулировка задачи:
список с вложенностью состоящий из строк (каждая строка одно слово) и заменить каждое из слов на ту часть речи к которому оно относится
если заканчивается на ть (глагол)
на й (прилагательное)
если на А (существительное)
рекурсивная обработка
Решение задачи: «Замена слов»
textual
Листинг программы
(defun task (stri) (mapcar #'(lambda (w) (cond ((listp w) (task w)) ((eq "ть" (strRight w 2)) "глагол") ((eq "й" (strRight w 1)) "прилагательное") ((eq "а" (strRight w 1)) "существительное") (t w))) stri)) ==> task (task '("мыть" "пилить" ("кошка" "мышка" "ловить") "серый" "белый")) ==> ("глагол" "глагол" ("существительное" "существительное" "глагол") "прилагательное" "прилагательное")
Объяснение кода листинга программы
В данном коде определена функция task
, которая принимает в качестве аргумента строку. Внутри функции используется оператор mapcar
, который применяет к каждому элементу строки указанную анонимную функцию. Эта функция проверяет каждый элемент строки на соответствие заданным условиям и заменяет его соответствующим словом.
Вот список действий, которые выполняются в данном коде:
- Проверка, является ли элемент строки списком. Если это так, то рекурсивно вызывается функция
task
для этого элемента. - Проверка, является ли последний символ элемента строки
ть
. Если это так, то заменяется наглагол
. - Проверка, является ли первый символ элемента строки
й
. Если это так, то заменяется наприлагательное
. - Проверка, является ли первый символ элемента строки
а
. Если это так, то заменяется насуществительное
. - Если ни одно из вышеперечисленных условий не выполняется, то элемент оставляется без изменений.
В результате выполнения функции
task
для строки '(мыть
пилить
(кошка
мышка
ловить
)серый
белый
)возвращается новая строка
глагол`глагол
(существительное
существительное
глагол
)прилагательное
прилагательное
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д