Найти все слова, которые есть в первом предложении, и отсутствуют во втором - 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, которая принимает два аргумента типа string — a и b. Эта функция находит разность множеств слов в строке a и строке b (т.е. находит слова, которые есть в a, но нет в b). Сначала функция string-list принимает строку s и возвращает список слов из этой строки. Она использует read-from-string для разбиения строки на слова, а затем удаляет лишние символы с помощью функции delete-if-not. В данном случае лишшими символами являются все символы, которые не являются буквами или пробелами. Затем функция word-set-difference вызывает функцию string-list для обоих аргументов, а затем использует set-difference для нахождения разности множеств. Результатом работы функции word-set-difference является список слов, которые есть в первом аргументе, но нет во втором. В приведенном примере функция word-set-difference вызывается с аргументами aa b-b cc и cc dd. Функция string-list преобразует эти строки в списки слов: [aa, b-b, cc] и [cc, dd]. Затем set-difference находит разность множеств: [aa, b-b]. Результатом работы функции является список слов: [AA, B-B].

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


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

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

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