Dado um número binário, sua tarefa é criar um 'ramo' desse número, com uma profundidade de 2.
Por exemplo, dado 0
como entrada, você deve gerar exatamente isso:
/000
/00
/ \001
0
\ /010
\01
\011
Isso deve ser bastante autoexplicativo de como os ramos devem ser criados. A profundidade 2 significa que calculamos ramificações para números de até 2 números mais longos. Também calculamos as ramificações em ordem, com zeros na parte superior e outros na parte inferior.
Mais casos de teste:
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
Regras
- Você nunca receberá caracteres na entrada que não sejam
1
e0
. 0 < length of input < 11
.- Espaço em branco à direita permitido no final das linhas.
0 < length of input < 11
é11
decimal ou binário? : PRespostas:
Geléia ,
3938 bytesExperimente online!
Quão?
A arte a ser impressa é:
Onde
N
é a sequência de entrada eL
é uma sequência de espaços do comprimento da sequência de entrada.Como tal, ele é constituído de oito componentes (
L
,N
,/
,0
, o carácter de nova linha,\
,1
, e o carácter de espaço) e, portanto, pode ser armazenada como um número de base-8 (que pode ser comprimida como um número de base-250 em geléia). Oṃ
átomo combina a conversão básica e a indexação em uma lista (efetivamente é possível definir dígitos arbitrários a serem usados).fonte
Lote,
178170159 bytesEditar: salvou 11 bytes graças a @ ConorO'Brien.
fonte
JavaScript (ES6), 112 bytes
Demo
Mostrar snippet de código
fonte
[n,n,s.replace(/./g,' '),s,'\\'][n]
?/\d/g
e não/./g
ignorar caracteres não numéricos.Python 3 ,
117109 bytesExperimente online!
A cadeia de formato quando impressa é semelhante a:
Isso já parece bom para uma sequência de comprimento igual a 1. Tudo o que precisamos fazer é substituir l por espaços de comprimento igual ao de ge e, é claro, g deve ser substituído pela sequência original
fonte
Python 3.6,
172153128 bytesLiteralmente, não é mais direto do que isso ... Isso é realmente mais curto do que minha tentativa original de gerá-lo com um algoritmo. Que triste.
-19 bytes graças a @Leo
-25 bytes graças a @ L3viathan
fonte
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 bytesObrigado a @Neil por salvar dois bytes!
Experimente online!
fonte
/
ou` padded to width
n + 1, why not print a space, and then a
/ `ou\
preenchido na larguran
?/
ou\
preenchido na larguran+1
, por que não imprimir um espaço e depois um/
ou\
preenchido na larguran
?Python 3 , 96 bytes
Experimente online! Os caracteres não imprimíveis não são exibidos corretamente; o formato da string é o mesmo que o officialaimm , mas com
\x01
forl
e\x02
forg
.Usa substituição de string com o Python 3 flexível
translate
. A lista de conversão é[s,' '*len(s),s]
mapeada\x01
para' '*len(s)
e\x02
paras
. Quaisquer caracteres maiores permanecem inalterados porque fornecem índices fora dos limites da lista.\x00
não pôde ser usado porque um byte nulo é lido como final do programa; portanto, a primeira entrada é desperdiçada.fonte
PHP , 128 bytes
Apenas uma saída simples
Experimente online!
fonte
Empilhados , 81 bytes
Experimente online!
Infelizmente não é muito interessante. Aqui está a parte mais interessante:
Isso é basicamente interpolação de strings, mas 10 bytes mais curto que o embutido.
fonte
/// , 116 bytes
Experimente online!
A entrada é a seguinte:
Funciona usando um modelo básico e adicionando espaços e caracteres quando necessário.
A contagem de bytes aumentou porque Ørjan Johansen percebeu que não lidava com espaçamento no início. Mas o problema é saber corrigido.
fonte
/*/\/y0\/ y\/\/y1\/ y\//**********/y///s/yx/
e então você começa com espaçamentos
./00/0|0//01/0|1//10/1|0//11/1|1//|/<\\y>//z/<y>x//<y>0/ //<y>1/ //<\\y\>///s/z/
pode lidar com comprimentos arbitrários.Python 2 ,
101,91 bytes113 bytesExperimente online!
Entrada é uma sequência de 0 e 1 de comprimento 1 ou 2! Isso é 0,01,10 ou 11!
+12 bytes - corrigido o espaçamento em \ para o comprimento de duas entradas.
fonte
0 < length of input < 11
".Carvão , 34 bytes
Experimente online! Link é a versão detalhada do código. Explicação:
Imprima os pares esquerdos de
/
s e\
s.Imprima a entrada justificada à direita na posição atual.
Faça um loop pelos galhos.
Mova a posição da ramificação. Podemos fazer isso porque a raiz foi impressa justificada à direita para que o ramo do meio esteja sempre na mesma posição absoluta.
Imprima a entrada.
Imprima o par certo de
/
e\
.Imprima o sufixo da ramificação.
Vá para a primeira folha.
Laço através das folhas.
Imprima a entrada e o sufixo de ramificação e folha.
Vá para a próxima folha. Nota: Se o espaço em branco à direita fosse aceitável,
F²⁺⁺⁺θι궶
ele salvaria um byte.fonte