В заданной строке определить самое короткое слово и напечатать его - Lisp
Формулировка задачи:
В заданной строке определить самое короткое слово и напечатать его.
Решение задачи: «В заданной строке определить самое короткое слово и напечатать его»
textual
Листинг программы
(defun split (str) (let ((str (strltrim str))) (unless (eq str "") (let ((lenword (strInd str " "))) (if (< 0 lenword) (cons (strMid str 1 (1- lenword)) (split (strMid str lenword))) (list (strMid str 1 (strlen str)))))))) (defun task (words) (let* ((word (car words)) (len (strlen word)) (tmp nil)) (dolist (item (cdr words) word) (when (< (setq tmp (strlen item)) len) (setq word item len tmp))))) (task (split "Отфильтровать базар и ответить за него.")) ==> "и"
Объяснение кода листинга программы
В коде две функции: split
и task
.
Функция split
принимает строку и возвращает список слов в этой строке.
Алгоритм работы следующий:
- Удаление пробелов в начале и в конце строки с помощью
strltrim
. - Проверка, пустая ли строка. Если нет, то переходим к следующему шагу, иначе возвращаем пустой список.
- Разделение строки на слова с помощью
strInd
, ищущего первое вхождение пробела. Если пробел не найден, то это означает, что строка состоит из одного слова, и мы добавляем это слово в список. Если пробел найден, то мы получаем подстроку до первого пробела и добавляем её в список, а затем рекурсивно вызываемsplit
для оставшейся части строки после пробела. Функцияtask
принимает список слов и находит самое короткое слово. Алгоритм работы следующий: - Получение первого слова из списка и сохранение его в переменной
word
. - Вычисление длины слова с помощью
strlen
. - Инициализация переменной
len
значением длины слова. - Обход списка слов с помощью
dolist
. - Для каждого слова в списке:
- Если длина текущего слова меньше длины предыдущего самого короткого слова, то обновляем значение
word
иlen
. - Если длина текущего слова равна длине предыдущего самого короткого слова, то обновляем только значение
word
.
- Если длина текущего слова меньше длины предыдущего самого короткого слова, то обновляем значение
- Возвращение самого короткого слова.
В результате выполнения кода будет выведено самое короткое слово из строки
Отфильтровать базар и ответить за него.
—и
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д