Удвоить согласные буквы - Lisp
Формулировка задачи:
Помогите пожалуйста!
Дана строка текста. Определить функцию, которая возвращает копию этой строки, в которой все согласные буквы удвоены.
Например: если дано "Привет, мир!", ответом будет "ППрривветт, ммирр!".
Решение задачи: «Удвоить согласные буквы»
textual
Листинг программы
(defun task(text) (let ((v "аеёиоуыэюяАЕЁИОУЫЭЮЯ") (r "")) (iter (for s in-string text) (if (zerop (strInd v s)) (setq r (strCat r s s)) (setq r (strCat r s)))) r))
Объяснение кода листинга программы
В данном коде реализована функция task, которая принимает в качестве аргумента строку text.
Внутри функции создаются две переменные: v и r.
Первая из них содержит строку аеёиоуыэюяАЕЁИОУЫЭЮЯ, а вторая - пустую строку.
Затем происходит итерация по каждому символу входной строки.
Если символ является нулевым, то есть не является буквой, то к переменной r добавляется этот символ и следующий за ним символ из строки v.
Если символ является буквой, то к переменной r добавляется этот символ и следующий за ним символ из строки v.
В конце функция возвращает полученную строку r.