Betrachten Sie beispielsweise ein Array von Bits
1 1 1 0 0 0 0 1 0 0 1 0 1 1 1 1 1 0 1 0
Wir bezeichnen ein zusammenhängendes Subarray mit einer Länge ≥ 5 als Phase, wenn mindestens 85% der Bits gleich sind und das erste / letzte Bit dem Mehrheitsbit entspricht. Außerdem nennen wir eine Phase maximal, wenn es sich nicht um eine strikte Unteranordnung einer anderen Phase handelt.
Hier sind die maximalen Phasen des obigen Beispiels:
1 1 1 0 0 0 0 1 0 0 1 0 1 1 1 1 1 0 1 0
-------------
-------------
-------------
Wie Sie sehen, gibt es 3
maximale Phasen. Auf der anderen Seite das
1 1 1 0 0 0 0 1 0 0 1 0 1 1 1 1 1 0 1 0
---------
ist keine maximale Phase, da es sich um ein striktes Subarray von mindestens einer anderen Phase handelt.
Die Herausforderung
Die Eingabe ist eine Folge von ≥ 5 Bits über STDIN, Befehlszeile oder Funktionsargument. Die Bits können als Zeichenfolge oder als Array eingegeben werden.
Sie müssen eine einzelne Ganzzahl ausgeben, die Anzahl der maximalen Phasen für das Array, die entweder über STDOUT ausgegeben oder von einer Funktion zurückgegeben werden.
Wertung
Dies ist Code-Golf, so dass das Programm mit den wenigsten Bytes gewinnt.
Testfälle
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
Hier ist die Erklärung für den letzten Fall:
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
---------------------------
-------------------------
-----------------
-----------------
-------------
Unterhaltsame Tatsache: Diese Herausforderung ergab sich aus einem Data-Mining-Problem mit dem Ziel, Änderungen in zeitlichen Daten zu erkennen.
0
und am letzten endet.
1 1 0 1 1
85% von 5 ist 4,25. Das heißt, Länge 5 wäre unmöglich oder sollten wir das auf 4 abrunden?