Вдохновленный A014486 .
Вызов
Учитывая целочисленный ввод в основании 10, создайте представление для двоичного леса, соответствующего вводу. Представления включают в себя, но не ограничиваются ими, вложенные массивы и строки.
Как?
Преобразовать входные данные в двоичный. 1
s представляют ветви, а 0
s представляют листья.
Чтобы это было легче понять, давайте использовать 834
(1101000010 в двоичном виде) в качестве примера.
Начнем с первой цифры. Первая цифра - это 1
, поэтому мы рисуем ветви:
\ / 1
или как массив, {{1}}
Следующая цифра 1
, поэтому мы рисуем больше веток (мы идем слева направо):
\ / 1 \ / 1
или как массив, {{1, {1}}}
Следующая цифра 0
, поэтому мы помещаем лист:
0 \ / 1 \ / 1
или как массив, {{1, {1, 0}}}
Следующая цифра - это 1
, поэтому мы размещаем ветку:
\ / 0 1 \ / 1 \ / 1
или как массив, {{1, {1, 0, {1}}}}
Повторяя процесс, мы получаем следующее дерево после 8-й цифры:
0 0 \ / 0 1 \ / 1 0 \ / 1
или как массив, {{1, {1, 0, {1, 0, 0}}, 0}}
Для оставшихся цифр мы рисуем больше деревьев:
9-ая цифра - это 0
, поэтому мы помещаем листок (аааа, это молодой выстрел!)
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}}
счет
Это код-гольф , поэтому побеждают младшие байты!