Во всех словах предложения заменить суффикс "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.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д