Weźmy pod uwagę tablicę bitów, powiedzmy
1 1 1 0 0 0 0 1 0 0 1 0 1 1 1 1 1 0 1 0
Ciągłą pod-tablicę o długości ≥ 5 nazywamy fazą, jeśli co najmniej 85% bitów jest takich samych, a oba pierwsze / ostatnie bity są równe bitowi większości. Ponadto nazywamy fazę maksymalną, jeśli nie jest to ścisła podtablica innej fazy.
Oto maksymalne fazy powyższego przykładu:
1 1 1 0 0 0 0 1 0 0 1 0 1 1 1 1 1 0 1 0
-------------
-------------
-------------
Jak widać, są 3maksymalne fazy. Z drugiej strony to
1 1 1 0 0 0 0 1 0 0 1 0 1 1 1 1 1 0 1 0
---------
nie jest fazą maksymalną, ponieważ jest ścisłą podtablicą co najmniej jednej innej fazy.
Wyzwanie
Dane wejściowe to sekwencja ≥ 5 bitów przez STDIN, wiersz poleceń lub argument funkcji. Bity mogą przychodzić jako ciąg znaków lub tablica.
Wyprowadzasz jedną liczbę całkowitą, liczbę maksymalnych faz dla tablicy, albo drukowaną przez STDOUT, albo zwracaną z funkcji.
Punktacja
To jest golf golfowy, więc program w najmniejszej liczbie bajtów wygrywa.
Przypadki testowe
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
Oto wyjaśnienie ostatniego przypadku:
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
---------------------------
-------------------------
-----------------
-----------------
-------------
Ciekawostka: wyzwanie powstało w wyniku eksploracji danych w celu wykrycia zmian w danych czasowych.
0a kończąc na ostatnim.
1 1 0 1 185% z 5 wynosi 4,25, co oznacza Więc długość 5 byłaby niemożliwa, czy powinniśmy zaokrąglić w dół do 4?