Учитывая заданное двоичное число, ваша задача состоит в том, чтобы создать «ветвь» этого числа с глубиной 2.
Например, в 0
качестве входных данных вы должны вывести именно это:
/000
/00
/ \001
0
\ /010
\01
\011
Это должно быть довольно самоочевидным о том, как должны быть созданы ветви. Глубина 2 означает, что мы вычисляем ветви для чисел до 2 чисел длиннее. Мы также вычисляем ветви по порядку, с нулями вверху и единицами внизу.
Больше тестовых случаев:
0
/000
/00
/ \001
0
\ /010
\01
\011
1
/100
/10
/ \101
1
\ /110
\11
\111
00
/0000
/000
/ \0001
00
\ /0010
\001
\0011
01
/0100
/010
/ \0101
01
\ /0110
\011
\0111
10
/1000
/100
/ \1001
10
\ /1010
\101
\1011
11
/1100
/110
/ \1101
11
\ /1110
\111
\1111
правила
- Вы никогда не получите символы на входе, кроме
1
и0
. 0 < length of input < 11
,- Конечный пробел допускается в конце строки.
0 < length of input < 11
является11
десятичным или двоичным? : PОтветы:
Желе ,
3938 байтПопробуйте онлайн!
Как?
Искусство для печати:
Где
N
строка ввода иL
строка пробелов длины строки ввода.Как таковой , он состоит из восьми компонентов (
L
,N
,/
,0
, символ новой строки,\
,1
и символ пробела) и , следовательно , может быть сохранен в виде числа базовых 8 (который может быть сжат в виде числа базовых 250 в желе).ṃ
Атом сочетает в базовое преобразование и индексация в список (эффективно можно определить произвольные цифры , которые будут использоваться).источник
Пакет,
178170159 байтИзменить: Сохранено 11 байтов благодаря @ ConorO'Brien.
источник
JavaScript (ES6), 112 байт
демонстрация
Показать фрагмент кода
источник
[n,n,s.replace(/./g,' '),s,'\\'][n]
?/\d/g
а не/./g
игнорирования нечисловых символов.Python 3 ,
117109 байтПопробуйте онлайн!
Строка формата при печати выглядит следующим образом:
Это выглядит хорошо уже для строки длины 1. Все, что нам нужно сделать, это заменить l на пробелы длины, равной длине g, и, конечно, g должна быть заменена исходной строкой.
источник
Python 3.6,
172153128 байтБуквально не становится более простым, чем это ... Это на самом деле короче, чем моя первоначальная попытка сгенерировать его с помощью алгоритма. Как грустно.
-19 байт благодаря @Leo
-25 байт благодаря @ L3viathan
источник
b*2+' '
)print(f'{a}/{k}00\n{b} /{k}0\n{b}/ {b}\\{k}01\n{k}\n{b}\\ {b}/{k}10\n{b} \\{k}1\n{b*2} \\{k}01')
C
170168 байтСпасибо @Neil за сохранение двух байтов!
Попробуйте онлайн!
источник
/
или` padded to width
n + 1, why not print a space, and then a
/ `или дополнить\
до шириныn
?/
или с\
отступом по ширинеn+1
, почему бы не напечатать пробел, а затем/
или с\
отступом по ширинеn
?Python 3 , 96 байт
Попробуйте онлайн! Непечатные символы отображаются неправильно; формат строки такой же, как и у officialaimm , но с
\x01
forl
и\x02
forg
.Использует подстановку строк с гибкой Python 3
translate
. Список перевода[s,' '*len(s),s]
отображается\x01
в' '*len(s)
и\x02
вs
. Любые более крупные символы остаются неизменными, поскольку они дают индексы, которые находятся за пределами списка.\x00
не может использоваться, потому что нулевой байт читается как конец программы, поэтому первая запись теряется.источник
PHP , 128 байт
Только простой вывод
Попробуйте онлайн!
источник
С накоплением , 81 байт
Попробуйте онлайн!
Не очень интересно, к сожалению. Вот самая интересная часть:
Это в основном строковая интерполяция, но на 10 байт короче встроенной.
источник
/// , 116 байт
Попробуйте онлайн!
Ввод выглядит следующим образом:
Работает, используя базовый шаблон и добавляя пробелы и символы, где это необходимо.
Количество байтов увеличилось, потому что Орджан Йохансен понял, что сначала он не обрабатывает интервалы. Но проблема в том, что проблема решена.
источник
/*/\/y0\/ y\/\/y1\/ y\//**********/y///s/yx/
и тогда вы получите интервалs
./00/0|0//01/0|1//10/1|0//11/1|1//|/<\\y>//z/<y>x//<y>0/ //<y>1/ //<\\y\>///s/z/
может обрабатывать произвольную длину.Python 2 ,
101,91 байт,113 байтПопробуйте онлайн!
Ввод - это строка из 0 и 1 длиной 1 или 2! Это 0,01,10 или 11!
+12 байт - исправлен интервал в \ для длины два ввода.
источник
0 < length of input < 11
".Древесный уголь , 34 байта
Попробуйте онлайн! Ссылка на подробную версию кода. Объяснение:
Выведите левые пары
/
s и\
s.Выведите ввод по правому краю в текущей позиции.
Цикл через ветви.
Переместите положение ветви. Мы можем сделать это, потому что корень был напечатан по правому краю, так что средняя ветвь всегда находится в одной и той же абсолютной позиции.
Распечатайте ввод.
Выведите правильную пару
/
и\
.Распечатать суффикс ветки.
Перейти к первому листу.
Перебрать листья.
Напечатайте ввод и суффикс ветви и листа.
Перейти к следующему листу. Примечание. Если бы оставшиеся пробелы были приемлемыми, тогда был
F²⁺⁺⁺θι궶
бы сохранен байт.источник