Определить слова, совпадающие с последним словом строки - Lisp

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

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

Есть строка. Определить слова,которые совпадают с последним словом. Проблема в том, что не знаю как найти в строке слово.

Решение задачи: «Определить слова, совпадающие с последним словом строки»

textual
Листинг программы
(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. Примеры использования функции:

  1. (task To be or not to be) Слово be найдено на 2-м месте
  2. (task Lorem Ipsum is simply dummy text of the printing and typesetting industry.) Слово Ipsum найдено на 5-м месте

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

15   голосов , оценка 4.133 из 5
Похожие ответы