Заменить в каждом предложении все вхождения заданного слова на заданное новое слово - Lisp
Формулировка задачи:
Добрый день! Помогите решить:
Дан текст. Заменить в каждом предложении все вхождения заданного слова на заданное новое слово.
Есть прога которая считает одинаковые символы:
Листинг программы
- (defun num-substr
- (a s &optional (m (length a)) (z 0) &aux (n (search a s)))
- (if n (num-substr a (subseq s (+ n m)) m (1+ z)) z))
- CL-USER 1 > (num-substr "a" "banana")
- 3
Решение задачи: «Заменить в каждом предложении все вхождения заданного слова на заданное новое слово»
textual
Листинг программы
- (defun substitute-word (z a s)
- (format nil "~{~a~^ ~}"
- (substitute
- (read-from-string z)
- (read-from-string a)
- (read-from-string
- (concatenate 'string "(" s ")")))))
- > (substitute-word "zz" "aa" "aa bb aa")
- "ZZ BB ZZ"
Объяснение кода листинга программы
В коде определена функция substitute-word
. Она принимает три аргумента: z
, a
и s
.
- В строке с форматом
nil
используется функцияformat
для вывода результата замены слова. - В функции
substitute
происходит замена слова в строкеs
. - В функции
read-from-string
происходит чтение строки из-за кавычек в коде. - В результате
concatenate
получается строка(s)
(s
)``. - Результат замены выводится на экран.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д