Во всех словах предложения заменить суффикс "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
в предложении.
Список шагов, которые выполняются в коде:
- Определяется функция
replace-ie
, которая принимает три аргумента:s
(строка, в которой нужно выполнить замену),a
(заменяемый суффикс) иb
(заменяющий суффикс). - В функции
replace-ie
используется вспомогательная переменнаяn
, которая инициализируется значениемnil
. Она будет использоваться для отслеживания результатов поиска подстрокиa
в строкеs
. - Если
n
неnil
, это означает, что подстрокаa
была найдена в строкеs
. В этом случае функцияreplace-ie
вызывается рекурсивно для строкиs
, замененной наb
, начиная с позицииn+1
. - Если
n
равноnil
, это означает, что подстрокаa
не была найдена в строкеs
. В этом случае исходная строкаs
возвращается без изменений. - Определяется функция
replace-inged
, которая вызывает функциюreplace-ie
для замены суффиксаing
наed
в предложении. - В функции
replace-inged
строкаinglewood laughing, and dancing.
передается в функциюreplace-ie
в качестве аргумента. - Функция
replace-ie
вызывается рекурсивно три раза: сначала для заменыing
наed
в словеlaughing
, затем для заменыing
наed
в словеdancing
, и, наконец, для заменыing
наed
в словеsinglewood
. - Результатом выполнения функции
replace-inged
является строкаinglewood laughed, and danced.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д