Bir sayı dizisini ezme işlemini tanımlayalım. Ezilme içinde diziyi soldan sağa okuruz. Bir noktada aynı elementten iki taneyle karşılaşırsak, ilkini çıkarır ve ikinciyi ikiye katlarız. Örneğin, aşağıdaki diziyi ezme işlemi burada
[5,2,2,3]
^
[5,2,2,3]
^
[5,2,2,3]
^
[5,4,3]
^
[5,4,3]
^
Aynı eleman birçok kez daraltılabilir, örneğin ezildiğinde [1,1,2]
olur [4]
.
Bu diziyi ezme işlemi onu değiştirmezse, ezilmeyen diziyi çağırırız. Mesela [1,2,3]
, [1,2,3]
ezilmeden sonra hala .
Göreviniz bir dizi almak ve onu kırılmaz hale getirmek için gereken ezme sayısını belirlemek. Yalnızca 0 - 2 32 -1 aralığındaki destek tam sayılarına ihtiyacınız var.
Bu kod-golf olduğundan, cevaplar daha az byte'ın daha iyi olmasıyla byte olarak puanlanacak.
Test Kılıfları
[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
sadece olduğunu anlamak için bir saniye sürdü 1
. Açıkça biz onu ezmek ve tam bir dizide aracılığıyla biz döngü vardır kaç kez sayıyorsanız yere belirtmeyi O bir fikir olabilir değil Başlangıçta düşündüğümüz gibi, toplam kaç kez birlikte 2 numara ezmek.
[1,1,2,4,8]
1 veya 4 dönmek?