Давайте визначимо процес дроблення масиву чисел. У роздачі ми читаємо масив зліва направо. Якщо в точці ми зустрічаємо два однакових елемента підряд, ми видаляємо перший і подвоюємо другий. Наприклад, ось процес дроблення наступного масиву
[5,2,2,3]
^
[5,2,2,3]
^
[5,2,2,3]
^
[5,4,3]
^
[5,4,3]
^
Ж елемент може бути згорнуто кілька разів, наприклад , [1,1,2]
стає [4]
при розтиранні.
Ми будемо називати масив нерозбірливим, коли процес дроблення цього масиву не змінить його. Наприклад [1,2,3]
, все ще [1,2,3]
після подрібнення.
Ваше завдання - взяти масив і визначити кількість подрібнень, необхідних для того, щоб зробити його нерозбірливим. Вам потрібно лише цілі числа підтримки в діапазоні від 0 до 2 32 -1
Це код-гольф, тому відповіді будуть набиратись у байтах, менша кількість байтів - краща.
Випробування
[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
саме так 1
. Можливо, ідея десь чітко зазначити, що ми підраховуємо кількість разів, що нам доведеться провести цикл через масив, щоб повністю розбити його, а не , як я спочатку думав, загальну кількість разів, коли ми розбиваємо 2 числа разом.
[1,1,2,4,8]
повернути 1 або 4?