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

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

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

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

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

textual
Листинг программы
  1. (defun twins (w)
  2.   (cond ((null w) 'no)
  3.         ((member (car w) (cdr w)) 'yes)
  4.         (t (twins (cdr w)))))
  5.  
  6. > (twins '(a b))
  7. NO
  8. > (twins '(a a))
  9. 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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы