Проверить, является ли первое множество подмножеством второго - Lisp

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

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

Даны два множества, представленные списками. Проверить, является ли первое множество подмножеством второго. Прокомментируйте код:
Листинг программы
  1. (defun contain (X A)
  2. (if (null X) nil (or (eq (car X) A) (contain (cdr X) A))))
  3. (defun include1 (Y X)
  4. (if (null X) T (and (contain Y (car X)) (include1 Y (cdr X)))))

Решение задачи: «Проверить, является ли первое множество подмножеством второго»

textual
Листинг программы
  1. (defun include1 (Y X) ;; Y - список, в котором ищем. X - что ищем
  2.   (if (null X) T ;; Пустое множество содержится в любом
  3.      (and (contain Y (car X)) (include1 Y (cdr X))))) ;; иначе
  4.      ;; X входит в Y, если голова и хвост X входят в Y

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

В данном коде реализуется функция include1, которая проверяет, является ли первое множество (которое представлено в виде списка X) подмножеством второго множества (которое представлено в виде списка Y). Вот список описывающих положений:

  1. Если X пустой список, то Y содержит X.
  2. Если X не пустой список, то выполняется следующее:
    • Проверяется, содержит ли Y голову X.
    • Рекурсивно вызывается функция include1 для Y и cdr X (т.е. X без головы).

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


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

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

15   голосов , оценка 3.8 из 5

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

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

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