Розглянемо масив бітів, скажімо
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?