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