Определите является ли список множеством - Lisp
Формулировка задачи:
Определите, является ли список множеством, т.е. входит ли каждый атом в него лишь один раз, учитывая все атомы подсписков.
Решение задачи: «Определите является ли список множеством»
textual
Листинг программы
(def a '(1 2 3 4 4)) (apply distinct? a) ;=> false (def a '(1 2 3 4)) (apply distinct? a) ;=> true
Объяснение кода листинга программы
В данном коде определен вспомогательный предикат distinct?
, который проверяет, является ли список множеством. Код также определяет переменную a
и применяет к ней предикат distinct?
.
Вот объяснение кода по шагам:
(def a '(1 2 3 4 4))
- Здесь определяется переменнаяa
и присваивается ей список(1 2 3 4 4)
.(apply distinct? a)
- Функцияapply
применяется к предикатуdistinct?
и спискуa
. Функцияapply
передает каждый элемент списка в качестве аргумента для предиката.false
- Результатом вызова функцииapply
с предикатомdistinct?
и списком(1 2 3 4 4)
будетfalse
, потому что список содержит повторяющиеся элементы(4 4)
.(def a '(1 2 3 4))
- Здесь определяется переменнаяa
и присваивается ей список(1 2 3 4)
.(apply distinct? a)
- Функцияapply
применяется к предикатуdistinct?
и спискуa
.true
- Результатом вызова функцииapply
с предикатомdistinct?
и списком(1 2 3 4)
будетtrue
, потому что список не содержит повторяющихся элементов.