В заданной строке определить самое короткое слово и напечатать его - Lisp

Узнай цену своей работы

Формулировка задачи:

В заданной строке определить самое короткое слово и напечатать его.

Решение задачи: «В заданной строке определить самое короткое слово и напечатать его»

textual
Листинг программы
  1. (defun split (str)
  2.   (let ((str (strltrim str)))
  3.     (unless (eq str "")
  4.        (let ((lenword (strInd str " ")))
  5.          (if (< 0 lenword)
  6.              (cons (strMid str 1 (1- lenword))
  7.                    (split (strMid str lenword)))
  8.              (list (strMid str 1 (strlen str))))))))
  9.  
  10. (defun task (words)
  11.   (let* ((word (car words))
  12.          (len (strlen word))
  13.          (tmp nil))
  14.     (dolist (item (cdr words) word)
  15.       (when (< (setq tmp (strlen item)) len)
  16.         (setq word item
  17.               len tmp)))))
  18.  
  19. (task (split "Отфильтровать базар и ответить за него."))
  20.  
  21. ==> "и"

Объяснение кода листинга программы

В коде две функции: split и task. Функция split принимает строку и возвращает список слов в этой строке. Алгоритм работы следующий:

  1. Удаление пробелов в начале и в конце строки с помощью strltrim.
  2. Проверка, пустая ли строка. Если нет, то переходим к следующему шагу, иначе возвращаем пустой список.
  3. Разделение строки на слова с помощью strInd, ищущего первое вхождение пробела. Если пробел не найден, то это означает, что строка состоит из одного слова, и мы добавляем это слово в список. Если пробел найден, то мы получаем подстроку до первого пробела и добавляем её в список, а затем рекурсивно вызываем split для оставшейся части строки после пробела. Функция task принимает список слов и находит самое короткое слово. Алгоритм работы следующий:
  4. Получение первого слова из списка и сохранение его в переменной word.
  5. Вычисление длины слова с помощью strlen.
  6. Инициализация переменной len значением длины слова.
  7. Обход списка слов с помощью dolist.
  8. Для каждого слова в списке:
    • Если длина текущего слова меньше длины предыдущего самого короткого слова, то обновляем значение word и len.
    • Если длина текущего слова равна длине предыдущего самого короткого слова, то обновляем только значение word.
  9. Возвращение самого короткого слова. В результате выполнения кода будет выведено самое короткое слово из строки Отфильтровать базар и ответить за него.и.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4.5 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы