Замена слов - 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, который применяет к каждому элементу строки указанную анонимную функцию. Эта функция проверяет каждый элемент строки на соответствие заданным условиям и заменяет его соответствующим словом. Вот список действий, которые выполняются в данном коде:

  1. Проверка, является ли элемент строки списком. Если это так, то рекурсивно вызывается функция task для этого элемента.
  2. Проверка, является ли последний символ элемента строки ть. Если это так, то заменяется на глагол.
  3. Проверка, является ли первый символ элемента строки й. Если это так, то заменяется на прилагательное.
  4. Проверка, является ли первый символ элемента строки а. Если это так, то заменяется на существительное.
  5. Если ни одно из вышеперечисленных условий не выполняется, то элемент оставляется без изменений. В результате выполнения функции task для строки '(мыть пилить (кошка мышка ловить) серый белый)возвращается новая строкаглагол`глагол (существительное существительное глагол) прилагательное прилагательное.

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


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

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

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