Проверить, является ли первое множество подмножеством второго - 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).
Вот список описывающих положений:
- Если X пустой список, то Y содержит X.
- Если X не пустой список, то выполняется следующее:
- Проверяется, содержит ли Y голову X.
- Рекурсивно вызывается функция include1 для Y и cdr X (т.е. X без головы).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д