Найти слова, которые есть в первом предложении, но отсутствуют во втором - Lisp

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

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

Найти все слова, которые есть в первом предложении и отсутствуют во втором.

Решение задачи: «Найти слова, которые есть в первом предложении, но отсутствуют во втором»

textual
Листинг программы
(defun word-set-difference (a b)
  (mapcar #'string (set-difference (string-list a)
                                   (string-list b))))
 
(defun string-list (s) 
  (read-from-string
   (concatenate
    'string "(" (delete-if-not #'(lambda (x)
                                   (or (alpha-char-p x)
                                       (equal x #\space)
                                       (equal x #\-)))
                               s) ")")))
 
> (word-set-difference "aa b-b cc" "cc dd")
("AA" "B-B")

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

В данном коде реализован алгоритм нахождения множества слов, которые присутствуют в первом предложении, но отсутствуют во втором. В функции word-set-difference происходит следующее:

  1. Создается функция string, которая преобразует каждый элемент списка в строку.
  2. Применяется функция mapcar к списку слов первого предложения, преобразуя каждый элемент в строку.
  3. Вычисляется разница между множеством слов первого предложения и второго предложения с помощью функции set-difference.
  4. Результатом является список слов, которые присутствуют в первом предложении, но отсутствуют во втором. В функции string-list происходит следующее:
  5. Используется функция read-from-string, чтобы прочитать строку из символа, следующего за последним символом в строке.
  6. Формируется строка, содержащая все слова в предложении, разделенные пробелами.
  7. Используется функция delete-if-not, чтобы удалить все символы, которые не являются буквами или пробелами.
  8. Результатом является список слов. Таким образом, код принимает два предложения в качестве входных данных и возвращает список слов, которые присутствуют только в первом предложении. В приведенном примере результатом является список слов AA и B-B.

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


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

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

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