Во всех словах предложения заменить суффикс "ing" на "ed" - Lisp

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

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

HomeLisp:
(defun task (sent)
  (let* ((wlist (strWords sent))
         (lw (length wlist))
         (tmp (mapcar #'(lambda (w) 
                 (let* ((l (strLen w))
                        (suff (strRight w 3))
                        (pref (if (> l 3) (strLeft w (- (strLen w) 3)) "")))
                      (if (eq suff "ing") (strCat pref "ed") w))) wlist))
         (res ""))
        (iter (for w in tmp) (setq res (strCat res " " w)))
        (strltrim res))) 
 
==> task
 
(task "speaking cooking and keeping")
 
==> "speaked cooked and keeped"

Решение задачи: «Во всех словах предложения заменить суффикс "ing" на "ed"»

textual
Листинг программы
(defun replace-ie (s a b &aux (n (search a s)))
  (if n (replace-ie (replace s b :start1 n) a b) s))
 
(defun replace-inged (s)
  (replace-ie
   (replace-ie
    (replace-ie s
                "ing."
                "ed. ")
    "ing,"
    "ed, ")
   "ing "
   "ed  "))
 
> (replace-inged "inglewood laughing, and dancing.")
"inglewood laughed,  and danced. "

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

В этом коде реализована функция замены суффикса ing на ed в предложении. Список шагов, которые выполняются в коде:

  1. Определяется функция replace-ie, которая принимает три аргумента: s (строка, в которой нужно выполнить замену), a (заменяемый суффикс) и b (заменяющий суффикс).
  2. В функции replace-ie используется вспомогательная переменная n, которая инициализируется значением nil. Она будет использоваться для отслеживания результатов поиска подстроки a в строке s.
  3. Если n не nil, это означает, что подстрока a была найдена в строке s. В этом случае функция replace-ie вызывается рекурсивно для строки s, замененной на b, начиная с позиции n+1.
  4. Если n равно nil, это означает, что подстрока a не была найдена в строке s. В этом случае исходная строка s возвращается без изменений.
  5. Определяется функция replace-inged, которая вызывает функцию replace-ie для замены суффикса ing на ed в предложении.
  6. В функции replace-inged строка inglewood laughing, and dancing. передается в функцию replace-ie в качестве аргумента.
  7. Функция replace-ie вызывается рекурсивно три раза: сначала для замены ing на ed в слове laughing, затем для замены ing на ed в слове dancing, и, наконец, для замены ing на ed в слове singlewood.
  8. Результатом выполнения функции replace-inged является строка inglewood laughed, and danced.

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


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

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

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