Функция: найти количество троек подряд идущих одинаковых элементов списка - Lisp

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

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

написать функцию, вычисляющую количество троек подряд идущих элементов числового списка, в каждой из которых все элементы одинаковы. Например (1 1 3 3 3 3 4 3 4 4 4 2 1 1 1) -> 4.

Решение задачи: «Функция: найти количество троек подряд идущих одинаковых элементов списка»

textual
Листинг программы
(defun count-triples (w)
  (loop for a in w
        for b in (cdr w)
        for c in (cddr w)
        when (= a b c) count a))
 
> (count-triples '(1 1 3 3 3 3 4 3 4 4 4 2 1 1 1))
4

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

В данном коде определена функция count-triples, которая принимает один аргумент w. Этот аргумент является списком. Внутри функции используется цикл loop, который выполняет три вложенных цикла for. Первый цикл выполняется для каждого элемента a в списке w. Второй цикл выполняется для каждого элемента b, который следует за a в списке w. Третий цикл выполняется для каждого элемента c, который следует за b в списке w. Операция = сравнивает значения a, b и c. Если они равны, то переменная a увеличивается на единицу. В конце функции результат выводится на экран. Ответ:

  1. В данном коде определена функция count-triples, которая принимает аргумент w.
  2. Функция использует цикл loop с тремя вложенными циклами for.
  3. Первый цикл выполняется для каждого элемента a в списке w.
  4. Второй цикл выполняется для каждого элемента b, который следует за a в списке w.
  5. Третий цикл выполняется для каждого элемента c, который следует за b в списке w.
  6. Операция = сравнивает значения a, b и c.
  7. Если они равны, то переменная a увеличивается на единицу.
  8. В конце функции результат выводится на экран.

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


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

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

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