Рассмотрим массив битов, скажем
1 1 1 0 0 0 0 1 0 0 1 0 1 1 1 1 1 0 1 0
Мы называем непрерывный подмассив длиной ≥ 5 фазой, если, по крайней мере, 85% битов одинаковы, а первый / последний биты равны основному биту. Кроме того, мы называем фазу максимальной, если она не является строгой подрешеткой какой-либо другой фазы.
Вот максимальные фазы приведенного выше примера:
1 1 1 0 0 0 0 1 0 0 1 0 1 1 1 1 1 0 1 0
-------------
-------------
-------------
Как видите, есть 3
максимальные фазы. С другой стороны, это
1 1 1 0 0 0 0 1 0 0 1 0 1 1 1 1 1 0 1 0
---------
не максимальная фаза, так как это строгий подмассив по крайней мере еще одной фазы.
Соревнование
Ввод представляет собой последовательность из 5 битов через STDIN, командную строку или аргумент функции. Биты могут входить в виде строки или массива.
Вы должны вывести единственное целое число, число максимальных фаз для массива, либо напечатанное через STDOUT, либо возвращенное из функции.
счет
Это код-гольф, поэтому выигрывает программа с наименьшим количеством байтов.
Контрольные примеры
0 1 0 1 0 -> 0
0 0 0 0 0 -> 1
0 0 0 0 1 0 1 1 1 1 -> 0
0 0 0 0 0 1 0 1 1 1 1 1 -> 2
1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 -> 1
0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 -> 2
0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 -> 1
0 1 0 1 0 0 1 0 1 0 1 0 0 0 1 1 1 1 0 1 0 0 1 1 0 0 0 1 1 0 -> 0
1 1 1 1 1 0 0 0 0 0 1 1 1 1 1 0 0 1 0 0 0 0 0 0 0 0 1 1 0 1 -> 4
0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 1 1 1 1 0 1 0 0 0 0 0 -> 5
Вот объяснение последнего случая:
0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 1 1 1 1 0 1 0 0 0 0 0
---------------------------
-------------------------
-----------------
-----------------
-------------
Интересный факт: эта проблема возникла из-за проблемы интеллектуального анализа данных с целью обнаружения изменений во временных данных.
0
и заканчивая последним.
1 1 0 1 1
85% от 5 составляет 4,25, то есть длина 5 будет невозможна, или мы должны округлить ее до 4?