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

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

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

HomeLisp:
Листинг программы
  1. (defun task (sent)
  2. (let* ((wlist (strWords sent))
  3. (lw (length wlist))
  4. (tmp (mapcar #'(lambda (w)
  5. (let* ((l (strLen w))
  6. (suff (strRight w 3))
  7. (pref (if (> l 3) (strLeft w (- (strLen w) 3)) "")))
  8. (if (eq suff "ing") (strCat pref "ed") w))) wlist))
  9. (res ""))
  10. (iter (for w in tmp) (setq res (strCat res " " w)))
  11. (strltrim res)))
  12. ==> task
  13. (task "speaking cooking and keeping")
  14. ==> "speaked cooked and keeped"

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

textual
Листинг программы
  1. (defun replace-ie (s a b &aux (n (search a s)))
  2.   (if n (replace-ie (replace s b :start1 n) a b) s))
  3.  
  4. (defun replace-inged (s)
  5.   (replace-ie
  6.    (replace-ie
  7.     (replace-ie s
  8.                 "ing."
  9.                 "ed. ")
  10.     "ing,"
  11.     "ed, ")
  12.    "ing "
  13.    "ed  "))
  14.  
  15. > (replace-inged "inglewood laughing, and dancing.")
  16. "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

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

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

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