Considera una serie di bit, diciamo
1 1 1 0 0 0 0 1 0 0 1 0 1 1 1 1 1 0 1 0
Chiamiamo un sottosray contiguo di lunghezza ≥ 5 una fase se almeno l'85% dei bit sono uguali e il primo / ultimo bit sono entrambi uguali al bit maggioritario. Inoltre, chiamiamo una fase massima se non è un sottoarray rigoroso di qualche altra fase.
Ecco le fasi massime dell'esempio sopra:
1 1 1 0 0 0 0 1 0 0 1 0 1 1 1 1 1 0 1 0
-------------
-------------
-------------
Come puoi vedere, ci sono 3
fasi massime. D'altra parte, questo
1 1 1 0 0 0 0 1 0 0 1 0 1 1 1 1 1 0 1 0
---------
non è una fase massima in quanto è un sottoarray rigoroso di almeno un'altra fase.
La sfida
L'ingresso è una sequenza di ≥ 5 bit tramite STDIN, riga di comando o argomento della funzione. I bit possono entrare come una stringa o un array.
Devi generare un unico numero intero, il numero di fasi massime per l'array, stampato tramite STDOUT o restituito da una funzione.
punteggio
Questo è code-golf, quindi vince il programma nel minor numero di byte.
Casi test
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
Ecco la spiegazione per l'ultimo caso:
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
---------------------------
-------------------------
-----------------
-----------------
-------------
Curiosità: questa sfida è nata da un problema di data mining con l'obiettivo di rilevare il cambiamento dei dati temporali.
0
e finendo all'ultimo.
1 1 0 1 1
85% di 5 è 4.25 che è Quindi la lunghezza 5 sarebbe impossibile o dovremmo arrotondare a 4?