Consente di definire il processo di frantumazione di una matrice di numeri. In una cotta leggiamo l'array da sinistra a destra. Se ad un certo punto incontriamo due dello stesso elemento di fila rimuoviamo il primo e raddoppiamo il secondo. Ad esempio, ecco il processo di compressione del seguente array
[5,2,2,3]
^
[5,2,2,3]
^
[5,2,2,3]
^
[5,4,3]
^
[5,4,3]
^
Lo stesso elemento può essere ripiegato più volte, ad esempio [1,1,2]
diventa [4]
schiacciati.
Chiameremo un array uncrushable quando il processo di schiacciamento di tale array non lo modifica. Ad esempio [1,2,3]
è ancora [1,2,3]
dopo essere stato schiacciato.
Il tuo compito è quello di prendere un array e determinare il numero di schiacciamenti necessari per renderlo incrollabile. Hai solo bisogno di supportare numeri interi compresi tra 0 e 2 32 -1
Questo è code-golf, quindi le risposte verranno classificate in byte con meno byte migliori.
Casi 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
fosse solo 1
. Potrebbe essere un'idea menzionare esplicitamente da qualche parte che stiamo contando il numero di volte in cui dobbiamo scorrere un array per comprimerlo completamente e non , come inizialmente pensavo, il numero totale di volte in cui schiacciamo 2 numeri insieme.
[1,1,2,4,8]
restituire 1 o 4?