考虑一下一个位数组
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
---------
不是最大相位,因为它是至少一个其他相位的严格子数组。
挑战
通过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 0 1 1
55%的85%是4.25,那么长度5将是不可能的,还是应该将其舍入为4?