Permet de définir le processus d'écrasement d'un tableau de nombres. Dans un écrasement, nous lisons le tableau de gauche à droite. Si, à un moment donné, nous rencontrons deux du même élément d'affilée, nous supprimons le premier et doublons le second. Par exemple, voici le processus d'écrasement du tableau suivant
[5,2,2,3]
^
[5,2,2,3]
^
[5,2,2,3]
^
[5,4,3]
^
[5,4,3]
^
Le même élément peut être replié plusieurs fois, par exemple [1,1,2]
devient [4]
quand on les écrase.
Nous appellerons un tableau non écrasable lorsque le processus d'écrasement de ce tableau ne le modifie pas. Par exemple, [1,2,3]
est toujours [1,2,3]
après avoir été écrasé.
Votre tâche consiste à prendre un tableau et à déterminer le nombre d'écrasements nécessaires pour le rendre impossible à écraser. Vous avez uniquement besoin de prendre en charge des entiers compris entre 0 et 2 32 -1
Il s'agit de code-golf donc les réponses seront notées en octets avec moins d'octets étant meilleurs.
Cas de test
[1] -> 0
[1,1] -> 1
[2,1,1] -> 2
[4,2,1,1] -> 3
[2,2,2,1,1] -> 3
[0,0,0,0] -> 1
[4,0,0,0,4] -> 1
[4,0,0,0,0,4] -> 1
[] -> 0
0,0,0,0
était seulement 1
. Ce pourrait être une idée de mentionner explicitement quelque part que nous comptons le nombre de fois que nous devons parcourir un tableau pour l'écraser complètement et non , comme je le pensais initialement, le nombre total de fois que nous écrasons 2 nombres ensemble.
[1,1,2,4,8]
renvoyer 1 ou 4?