Натхненний A014486 .
Виклик
З огляду на цілий вхід в базі 10, побудуйте подання для двійкового лісу, відповідного входу. Представлення включають, але не обмежуються ними, вкладені масиви та рядки.
Як?
Перетворити вхід у двійкове. 1
s представляють гілки, а 0
s представляють листя.
Щоб зробити це легше зрозуміти, давайте використовувати 834
(1101000010 у двійковій) як приклад.
Починаємо з першої цифри. Перша цифра - це 1
, тому ми малюємо гілки:
\ / 1
або як масив, {{1}}
Наступна цифра 1
, тому ми малюємо більше гілок (йдемо зліва направо):
\ / 1 \ / 1
або як масив, {{1, {1}}}
Наступна цифра - 0
ми розміщуємо аркуш:
0 \ / 1 \ / 1
або як масив, {{1, {1, 0}}}
Наступна цифра - a 1
, тому ми розміщуємо гілку:
\ / 0 1 \ / 1 \ / 1
або як масив, {{1, {1, 0, {1}}}}
Повторюючи процес, ми отримуємо наступне дерево після 8-ї цифри:
0 0 \ / 0 1 \ / 1 0 \ / 1
або як масив, {{1, {1, 0, {1, 0, 0}}, 0}}
Для решти цифр намалюємо більше дерев:
Дев'ята цифра - це 0
, тому ми розміщуємо аркуш (aww, це молода стрілянина!)
0 0 \ / 0 1 \ / 1 0 \ / 1 0
або як масив, {{1, {1, 0, {1, 0, 0}}, 0}, 0}
Коли ми використовуємо всі цифри, ми закінчуємо це:
0 0 \ / 0 1 \ / 1 0 0 \ / \ / 1 0 1
або як масив, {{1, {1, 0, {1, 0, 0}}, 0}, 0, {1, 0}}
Це виглядає дивно, тому ми покладаємо нуль, щоб завершити дерево:
0 0 \ / 0 1 \ / 1 0 0 0 \ / \ / 1 0 1
або як масив, {{1, {1, 0, {1, 0, 0}}, 0}, 0, {1, 0, 0}}
Зауважте, що вирівнювання масиву дає вихідне число у двійковій формі, але з прокладеним нулем.
Критерії
- Вихід повинен чітко відображати розділення дерев та гілок (якщо це не вкладений масив, будь ласка, поясніть свій вихідний формат).
- Вилучення всіх цифр з виводу повинно бути ідентичним двійковому представленню входу (із заниженим нулем (ями) вищевказаного процесу).
Тестові справи
Вихід може відрізнятися до тих пір, поки він відповідає критеріям.
0 -> {0} 1 -> {{1, 0, 0}} 44 -> {{1, 0, {1, {1, 0, 0}, 0}}} 63 -> {{1, {1, {1, {1, {1, {1, 0, 0}, 0}, 0}, 0}, 0}, 0}} 404 -> {{1, {1, 0, 0}, {1, 0, {1, 0, 0}}}} 1337 -> {{1, 0, {1, 0, 0}}, {1, {1, {1, 0, 0}, {1, 0, 0}}, 0}}
Оцінка балів
Це код-гольф , тому виграє найнижчий байт!