Определить слова, совпадающие с последним словом строки - Lisp
Формулировка задачи:
Решение задачи: «Определить слова, совпадающие с последним словом строки»
(defun task (txt) (let* ((ws (strWords txt)) (lw (car (last ws)))) (iter (for a in (butlast ws)) (for i upfrom 1) (when (eq a lw) (printsline (strCat "Слово " lw " найдено на " (fix2str i) "-м месте")))))) ==> TASK (task "To be or not to be") Слово be найдено на 2-м месте ==> NIL
Объяснение кода листинга программы
В данном коде определена функция task
, которая принимает в качестве аргумента строку txt
. Внутри функции создается список слов из данной строки с помощью функции strWords
, и сохраняется в переменную ws
. Затем из списка ws
извлекается последнее слово, сохраняется в переменную lw
.
Далее, с помощью цикла iter
происходит итерация по списку ws
, начиная с первого слова (так как используется for i upfrom 1
). При каждом проходе цикла проверяется равенство текущего слова a
последнему слову lw
с помощью функции eq
. Если равенство найдено, то с помощью функции printsline
выводится сообщение вида Слово be найдено на 2-м месте
.
В конце функции возвращается nil
.
Примеры использования функции:
- (task
To be or not to be
)Слово be найдено на 2-м месте
- (task
Lorem Ipsum is simply dummy text of the printing and typesetting industry.
)Слово Ipsum найдено на 5-м месте
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д