Проверить,есть ли в заданном списке хотя бы 2 одинаковых элемента - Lisp
Формулировка задачи:
Решение задачи: «Проверить,есть ли в заданном списке хотя бы 2 одинаковых элемента»
(defun twins (w) (cond ((null w) 'no) ((member (car w) (cdr w)) 'yes) (t (twins (cdr w))))) > (twins '(a b)) NO > (twins '(a a)) YES
Объяснение кода листинга программы
В коде определён вспомогательный функциял twins
, который проверяет наличие в заданном списке хотя бы двух одинаковых элементов. Функциял принимает в качестве аргумента список w
. Если список пуст, то возвращается значение no
. Если в списке есть хотя бы два одинаковых элемента, то возвращается значение yes
.
В первом выражении функции twins
с помощью условного выражения cond
проверяется пустой ли список w
. Если список пуст, то возвращается значение no
.
Во втором выражении функции twins
с помощью функции member
проверяется, есть ли первый элемент списка w
в его хвосте (cdr w)
. Если первый элемент списка присутствует в его хвосте, то возвращается значение yes
.
В третьем выражении функции twins
вызывается рекурсивно функция twins
с аргументом (cdr w)
, то есть без первого элемента списка.
Примеры использования функции twins
показывают, что если список содержит два одинаковых элемента, то возвращается значение yes
, в противном случае — no
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д