Раніше я визначив процес дроблення масиву
У роздачі ми читаємо масив зліва направо. Якщо в точці ми зустрічаємо два однакових елемента підряд, ми видаляємо перший і подвоюємо другий.
Наприклад, ось процес дроблення наступного масиву
[5,2,2,4]
^
[5,2,2,4]
^
[5,2,2,4]
^
[5,4,4]
^
[5,4,4]
^
[5,8]
^
Зауважте, що один і той же елемент можна згортати кілька разів. У прикладі 2,2,4
було розбито 8
в один прохід.
Тепер дроблення масивів легко, те, що важко, видаляє їх. Ваше завдання - взяти масив додатних цілих чисел як вхід і вивести найбільший масив, який може сформувати вхід при повторному подрібненні. Наприклад, масив [4]
формується дробленням, [2,2]
яке, у свою чергу, формується дробленням [1,1,1,1]
. Оскільки ми не можемо мати цілі значення, [1,1,1,1]
то не можна більше розмивати, і тому наша відповідь.
Ви ніколи не отримаєте 0
вхідний масив, оскільки такі масиви можна розширювати на невизначений термін. Ви також ніколи не отримаєте справу з двома однаковими непарними номерами поруч, такі випадки не можуть бути результатом розбиття.
Це код-гольф, тому відповіді будуть набиратися з розміром їх джерела, виміряним у байтах, меншим числом байтів.
Перш ніж розпочати свою відповідь, я просто хочу сказати, що цей виклик значно складніше, ніж здається. Перевірте свою інтуїцію, коли ви йдете разом, і переконайтеся, що ваша відповідь проходить усі тестові випадки.
Випробування
[] -> []
[5] -> [5]
[6] -> [3,3]
[8] -> [1,1,1,1,1,1,1,1]
[4,8] -> [1,1,1,1,1,1,1,1,1,1,2]
[2,8] -> [1, 1, 1, 1, 2, 1, 1, 1, 1]
[4,4] -> [1,1,1,1,1,1,1,1]
[1,>1,1,1,1,1,1,1,1,1,2]
, [2,>1,1,1,1,1,1,1,1,2]
, [2,1,>1,1,1,1,1,1,1,2]
, [2,2,>1,1,1,1,1,1,2]
, [2,2,1,>1,1,1,1,1,2]
, [2,2,2,>1,1,1,1,2]
, [2,2,2,1,>1,1,1,2]
, [2,2,2,2,>1,1,2]
, [2,2,2,2,1,>1,2]
, [2,2,2,2,2,>2]
, [2,2,2,2,4>]
, другий прохід: [2,>2,2,2,4]
, [4,>2,2,4]
, [4,2,>2,4]
, [4,4,>4]
, [4,8>]
. Сподіваюсь, що це очистить. Якщо ви хочете, щоб якийсь код поглянути на попереднє питання, має відповіді, які реалізують функцію дроблення.
[4, 4]
слід вилучити, оскільки ми ніколи не зможемо отримати цей масив після розтягування => послідовності розчавлення, оскільки це закінчиться[8]
[1,1,1,1,1,1,1,1,1,1,2]
виробляти[4, 8]
замість[8, 4]
? це повинно бути[1,>1,1,1,1,1,1,1,1,1,2]
,[2,1,>1,1,1,1,1,1,1,2]
,[2,>2,1,1,1,1,1,1,2]
,[4,1,>1,1,1,1,1,2]
,[4,2,1,>1,1,1,2]
,[4,2,>2,1,1,2]
,[4,>4,1,1,2]
,[8,1,>1,2]
,[8,2,>2]
,[8,4]
?