Considérons un tableau de bits, disons
1 1 1 0 0 0 0 1 0 0 1 0 1 1 1 1 1 0 1 0
Nous appelons un sous-tableau contigu de longueur ≥ 5 une phase si au moins 85% des bits sont les mêmes et les premier / dernier bits sont tous les deux égaux au bit majoritaire. De plus, nous appelons une phase maximale si ce n'est pas un sous-tableau strict d'une autre phase.
Voici les phases maximales de l'exemple ci-dessus:
1 1 1 0 0 0 0 1 0 0 1 0 1 1 1 1 1 0 1 0
-------------
-------------
-------------
Comme vous pouvez le voir, il existe 3
des phases maximales. D'un autre côté, ce
1 1 1 0 0 0 0 1 0 0 1 0 1 1 1 1 1 0 1 0
---------
n'est pas une phase maximale car c'est un sous-tableau strict d'au moins une autre phase.
Le défi
L'entrée est une séquence de ≥ 5 bits via STDIN, ligne de commande ou argument de fonction. Les bits peuvent entrer sous forme de chaîne ou de tableau.
Vous devez sortir un seul entier, le nombre de phases maximales pour le tableau, imprimé via STDOUT ou renvoyé par une fonction.
Notation
Il s'agit de code-golf, le programme gagne donc le moins d'octets.
Cas de 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
Voici l'explication du dernier cas:
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
---------------------------
-------------------------
-----------------
-----------------
-------------
Fait amusant: ce défi est né d'un problème d'exploration de données dans le but de détecter les changements dans les données temporelles.
0
et se terminant au dernier.
1 1 0 1 1
85% de 5 soit 4,25 qui est donc la longueur 5 serait impossible ou devrions-nous l'arrondir à 4?