Considere una variedad de bits, digamos
1 1 1 0 0 0 0 1 0 0 1 0 1 1 1 1 1 0 1 0
Llamamos a un subconjunto contiguo de longitud ≥ 5 una fase si al menos el 85% de los bits son iguales y los primeros / últimos bits son iguales al bit mayoritario. Además, llamamos a una fase máxima si no es un subconjunto estricto de alguna otra fase.
Estas son las fases máximas del ejemplo anterior:
1 1 1 0 0 0 0 1 0 0 1 0 1 1 1 1 1 0 1 0
-------------
-------------
-------------
Como puede ver, hay 3
fases máximas. Por otro lado, esto
1 1 1 0 0 0 0 1 0 0 1 0 1 1 1 1 1 0 1 0
---------
no es una fase máxima, ya que es un subconjunto estricto de al menos otra fase.
El reto
La entrada es una secuencia de ≥ 5 bits a través de STDIN, línea de comando o argumento de función. Los bits pueden venir como una cadena o una matriz.
Debe generar un número entero único, el número de fases máximas para la matriz, ya sea impreso a través de STDOUT o devuelto desde una función.
Tanteo
Este es el código de golf, por lo que gana el programa en la menor cantidad de bytes.
Casos de prueba
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
Aquí está la explicación para el último 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
---------------------------
-------------------------
-----------------
-----------------
-------------
Dato curioso: este desafío surgió de un problema de minería de datos con el objetivo de detectar cambios en los datos temporales.
0
y termina en el último.
1 1 0 1 1
85% de 5 es 4.25, que es ¿Entonces la longitud 5 sería imposible o deberíamos redondearlo a 4?