Разность списков - Lisp

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

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

Определите функцию, зависящую от двух аргументов u и v, являющихся списками, которая вычисляет список всех элементов u, не содержащихся в v. Я пытался:
Листинг программы
  1. (defun f (u v)
  2. (cond ((null u) nil)
  3. ((equal (car u)(car v)) (f (cdr u)(cdr v)))
  4. (t (cons(car u) (f (cdr u)(cdr v)))) ))
  5. (f '(x y a f b 7 y x a b)'(x y a f b d h o u t p p r x))
  6. ==> (7 y x a b)

Решение задачи: «Разность списков»

textual
Листинг программы
  1. (defun diff-lists (x y)
  2.   (remove-if #'(lambda (z) (member z y)) x))
  3.  
  4.  
  5. ==> DIFF-LISTS
  6.  
  7. (diff-lists '(1 2 3 4 5) '(3 4 5 6 7 8))
  8.  
  9. ==> (1 2)

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

В коде определена функция DIFF-LISTS, которая принимает два аргумента X и Y. Функция использует оператор REMOVE-IF для фильтрации списка X, который возвращает только те элементы, которые не встречаются в списке Y. То есть функция возвращает список, вычтенный из первого списка, который содержит только общие элементы с вторым списком. При вызове функции с аргументами '(1 2 3 4 5) и '(3 4 5 6 7 8) возвращается список (1 2), так как эти элементы отсутствуют во втором списке.

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


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

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

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

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

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

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