Натхненний A014486 .
Виклик
З огляду на цілий вхід в базі 10, побудуйте подання для двійкового лісу, відповідного входу. Представлення включають, але не обмежуються ними, вкладені масиви та рядки.
Як?
Перетворити вхід у двійкове. 1s представляють гілки, а 0s представляють листя.
Щоб зробити це легше зрозуміти, давайте використовувати 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}}
Оцінка балів
Це код-гольф , тому виграє найнижчий байт!