Проверить,есть ли в заданном списке хотя бы 2 одинаковых элемента - Lisp

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

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

Здравствуйте,помогите пожалуйста с написанием программки: Нужно проверить,есть в заданном списке хотя бы 2 одинаковых элемента,ответ представить в виде "Да/Нет" Заранее спасибо

Решение задачи: «Проверить,есть ли в заданном списке хотя бы 2 одинаковых элемента»

textual
Листинг программы
(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.

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


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

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

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