Статья Автор: Лебедев Дмитрий

TUZ_6-07 Подсчет количества троек чисел

TUZ_6-07. Подсчет количества троек чисел

TUZ_6-07. Подсчет количества троек чисел
6.7. Подсчет количества троек чисел
Пусть items – список чисел такой, что элементы этого списка в позициях i < j < k составляют тройку,
если items [i] == items [j] == items [k] и j – i == k – j.
Например, подсчитаем количество троек в списке items = [42, 9, 42, 42, 42, 103].
  • В 0-й, 2-й и 4-й позициях находятся числа 42, 42 и 42 соответственно,
    при этом 2 – 0 = 4 – 2, т. е. 2 = 2. Числа в этих позициях образуют тройку.
  • Другая тройка образуется числами в 2-й, 3-й и 4-й позициях,
    потому что 3 – 2 = 4 – 3, т. е. 1 = 1.
Таким образом, в рассматриваемом списке имеются две тройки.
Ваша задача: написать функцию, которая принимает список положительных и отрицательных целых чисел
и возвращает количество троек в нем.
В табл. 6.7 показаны ожидаемые результаты для некоторых входных данных.
Таблица 6.7. Некоторые ожидаемые результаты для задачи подсчета троек
items Ожидаемый результат
42, 9, 42, 42, 42, 103 2
-8, -8, 109, -8, -8, -8, -36 2
21, -41, 21, 76, 21, -71, 21, 17, 17, 17, 17, 17, 47 6
77, 1, 2, -4, 13, 77, 7, 9, 1 0

Алгоритм
Пусть функция TroikaCounter – это функция, подсчитывающая количество троек в списке items.
Для проверки условия j – i == k – j она проверяет состояние items [i] == items [j] == items [2 * j – i]
для каждого i в диапазоне от 0 до |items| и для каждого j в диапазоне от i + 1 до |items|.
Если условие items [i] == items [j] == items [2 * j – i] выполняется и числа во всех трех позициях одинаковые
(третья позиция определяется выражением (2 * j – i)), то счетчик TroikaCounter увеличивается на единицу.
В завершение функция возвращает TroikaCounter как количество троек.


Пропустить Навигационные Ссылки.
Чтобы оставить комментарий нужна авторизация
Печать