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

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

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

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

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

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

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

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

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

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


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

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

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