Найти в данном тексте самое короткое слово - Lisp

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

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

найти в данном тексте самое короткое слово.

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

textual
Листинг программы
  1. (defun shortest-w (txt)
  2.   (let* ((w (strWords txt))
  3.          (l (mapcar #'(lambda (x) (strLen x)) w))
  4.          (min (apply 'min l)))
  5.     (remove-if #'(lambda (x) (> (strLen x) min)) w)))
  6.  
  7. ==> shortest-w
  8.  
  9. (shortest-w "Aaa bb sss f qq j")
  10.  
  11. ==> ("f" "j")

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

В данном коде представлена функция shortest-w, которая принимает в качестве аргумента строку txt и возвращает два значения: самое короткое слово в строке и его длину. В функции используется встроенная функция strWords, которая разбивает строку на слова и возвращает список слов. Далее, с помощью функции mapcar и анонимной функции, которая принимает слово и возвращает его длину, создаётся список длин всех слов в строке. С помощью функции min находится минимальное значение в списке длин слов. И, наконец, с помощью функции remove-if и анонимной функции, которая возвращает true, если длина слова больше минимального значения, из списка слов удаляются все слова, длина которых больше минимальной. В результате выполнения функции shortest-w с аргументом Aaa bb sss f qq j возвращаются два значения: f и j, которые являются самым коротким словом и его длиной в данной строке.

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


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

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

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

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

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

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