たとえば、ビットの配列を考えます
1 1 1 0 0 0 0 1 0 0 1 0 1 1 1 1 1 0 1 0
ビットの少なくとも85%が同じであり、最初のビットと最後のビットの両方がマジョリティビットに等しい場合、長さが5以上の連続するサブアレイをフェーズと呼びます。さらに、他のフェーズの厳密なサブアレイでない場合、フェーズを最大と呼びます。
上記の例の最大フェーズは次のとおりです。
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
---------
少なくとも1つの他のフェーズの厳密なサブアレイであるため、最大フェーズではありません。
チャレンジ
入力は、STDIN、コマンドライン、または関数引数を介した5ビット以上のシーケンスです。ビットは、文字列または配列として入ることがあります。
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 1 0 1 1
85%が4.25であるような長さ5があるとしましょう。