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,0fosse 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?