Подсчитать все пары элементов в списке - Lisp

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

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

Помогите плиз решить эту задачу - Посчитать все пары элементов в списке

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

textual
Листинг программы
  1. (defun cou (el lst)
  2.   (cond ((null lst) 0)
  3.         ((= el (car lst)) (+ 1 (cou el (cdr lst))))
  4.         (t (cou el (cdr lst)))))
  5.  
  6. ==> cou
  7.  
  8. (defun task (lst)
  9.   (cond ((null (cdr lst)) 0)
  10.         (t (+ (cou (car lst) (cdr lst)) (task (cdr lst))))))
  11.  
  12. ==> task
  13.  
  14. (task '(1 1 1 2 2 3 3))
  15.  
  16. ==> 5

Объяснение кода листинга программы

В коде определены две функции: cou и task. Функция cou принимает два аргумента: el и lst. Если lst равно nil, то возвращается 0. Если el равно car lst, то рекурсивно вызывается функция cou для el и cdr lst. В противном случае, рекурсивно вызывается функция cou для el и cdr lst. Функция task принимает один аргумент: lst. Если cdr lst равно nil, то возвращается 0. Иначе, рекурсивно вызывается функция task для cdr lst. В обоих функциях используется рекурсия для обработки каждого элемента списка. Код был протестирован с помощью вызова функции task и передачи списка '(1 1 1 2 2 3 3)'. Функция должна была вернуть 5, что означает, что были обработаны все элементы списка и было найдено 5 пар одинаковых элементов.

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


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

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

13   голосов , оценка 3.385 из 5

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

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

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