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