Написать программу, которая вставляет в текст слово после указанного слова - Lisp
Формулировка задачи:
Решение задачи: «Написать программу, которая вставляет в текст слово после указанного слова»
(defun insert-word (s p r &aux (e (search p s))) (cond ((null e) s) ((concatenate 'string (subseq s 0 e) p " " r (insert-word (subseq s (+ e (length p))) p r))))) > (insert-word "To be or not to be" "be" "beer") "To be beer or not to be beer" > (insert-word "To bbbe" "be" "beer") "To bbbe beer"
Объяснение кода листинга программы
В данном коде представлена функция insert-word
, которая принимает на вход три аргумента: s
(исходный текст), p
(слово, после которого необходимо вставить новое слово) и r
(новое слово).
Функция ищет позицию указанного слова p
в тексте s
с помощью встроенной функции search
. Затем, используя функцию concatenate
, она вставляет новое слово r
после найденного слова p
в тексте s
.
Если указанное слово p
не найдено в тексте s
, то функция возвращает исходный текст s
.
Если слово p
найдено в тексте s
, то функция рекурсивно вызывает саму себя с новыми аргументами: (subseq s (+ e (length p)))
— это следующий фрагмент текста после найденного слова p
, p
— это само найденное слово, и r
— это новое слово.
Таким образом, функция продолжает работу до тех пор, пока не будет достигнута конечная позиция в тексте s
, после чего возвращает результат.
Примеры использования функции insert-word
:
(insert-word
To be or not to be`be
beer
)— в результате получим строку
To be beer or not to be beer`.(insert-word
To bbbe`be
beer
)— в результате получим строку
To bbbe beer`.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д