Definieren wir den Prozess des Zerquetschens einer Reihe von Zahlen. In einem Schwarm lesen wir das Array von links nach rechts. Wenn wir an einem Punkt zwei gleiche Elemente in einer Reihe antreffen, entfernen wir das erste und verdoppeln das zweite. Hier ist zum Beispiel der Prozess des Zerquetschens des folgenden Arrays
[5,2,2,3]
^
[5,2,2,3]
^
[5,2,2,3]
^
[5,4,3]
^
[5,4,3]
^
Das gleiche Element kann mehrfach zusammengebrochen werden, zum Beispiel [1,1,2]
wird , [4]
wenn zerkleinert.
Wir werden ein Array als nicht zerlegbar bezeichnen, wenn der Prozess des Zerlegens dieses Arrays es nicht ändert. Zum Beispiel [1,2,3]
ist immer noch [1,2,3]
nach zerkleinert.
Ihre Aufgabe ist es, ein Array zu nehmen und die Anzahl der Crushs zu bestimmen, die erforderlich sind, um es unzerbrechlich zu machen. Sie benötigen nur Ganzzahlen im Bereich von 0 bis 2 32 -1
Dies ist Codegolf, daher werden die Antworten in Bytes bewertet, wobei weniger Bytes besser sind.
Testfälle
[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
es nur so war 1
. Es könnte eine Idee sein, irgendwo explizit zu erwähnen, dass wir zählen, wie oft wir ein Array durchlaufen müssen, um es vollständig zu zerstören, und nicht , wie ich anfangs dachte, wie oft wir insgesamt 2 Zahlen zusammen zerstören.
[1,1,2,4,8]
1 oder 4 zurückgeben?