Dado un número binario, su tarea es crear una 'rama' de ese número, con una profundidad de 2.
Por ejemplo, dado 0
como entrada, debe generar exactamente esto:
/000
/00
/ \001
0
\ /010
\01
\011
Esto debería explicarse por sí mismo de cómo se deben crear las ramas. La profundidad 2 significa que calculamos ramas para números de hasta 2 números más largos. También calculamos las ramas en orden, con ceros en la parte superior y unos en la parte inferior.
Más casos de prueba:
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
Reglas
- Nunca recibirá caracteres en la entrada que no sean
1
y0
. 0 < length of input < 11
.- Se permiten espacios en blanco al final de las líneas.
0 < length of input < 11
es11
decimal o binario? : PRespuestas:
Jalea ,
3938 bytesPruébalo en línea!
¿Cómo?
El arte a imprimir es:
Donde
N
está la cadena de entrada yL
es una cadena de espacios de la longitud de la cadena de entrada.Como tal, se compone de ocho componentes (
L
,N
,/
,0
, el carácter de nueva línea,\
,1
, y el carácter de espacio) y por lo tanto pueden ser almacenados como un número de base-8 (que puede ser comprimido como un número de base 250 en Jelly). Elṃ
átomo combina la conversión de base y la indexación en una lista (efectivamente, uno puede definir dígitos arbitrarios para ser utilizados).fuente
Lotes,
178170159 bytesEditar: Guardado 11 bytes gracias a @ ConorO'Brien.
fuente
JavaScript (ES6), 112 bytes
Manifestación
Mostrar fragmento de código
fuente
[n,n,s.replace(/./g,' '),s,'\\'][n]
?/\d/g
lugar de/./g
ignorar caracteres no numéricos.Python 3 ,
117109bytesPruébalo en línea!
La cadena de formato cuando se imprime se ve así:
Esto ya se ve bien para una cadena de longitud 1. Todo lo que tenemos que hacer es reemplazar l por espacios de longitud igual a la de gy, por supuesto, g debe ser reemplazada por la cadena original
fuente
Python 3.6,
172153128 bytesLiteralmente no se vuelve más directo que esto ... Esto es en realidad más corto que mi intento original de generarlo con un algoritmo. Qué triste.
-19 bytes gracias a @Leo
-25 bytes gracias a @ L3viathan
fuente
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 bytes¡Gracias a @Neil por guardar dos bytes!
Pruébalo en línea!
fuente
/
o` padded to width
n + 1, why not print a space, and then a
/ `o\
relleno al anchon
?/
o\
acolchado al anchon+1
, ¿por qué no imprimir un espacio y luego un/
o\
acolchado al anchon
?Python 3 , 96 bytes
Pruébalo en línea! Los caracteres no imprimibles no se muestran correctamente; el formato de cadena es el mismo que el de officialaimm , pero con
\x01
forl
y\x02
forg
.Utiliza la sustitución de cadenas con Python 3's flexible
translate
. La lista de traducción se[s,' '*len(s),s]
asigna\x01
a' '*len(s)
y\x02
paras
. Los caracteres más grandes no cambian porque dan índices que están fuera de los límites de la lista.\x00
no se pudo utilizar porque se lee un byte nulo como final del programa, por lo que se desperdicia la primera entrada.fuente
PHP , 128 bytes
Solo una salida simple
Pruébalo en línea!
fuente
Apilado , 81 bytes
Pruébalo en línea!
No muy interesante, desafortunadamente. Aquí está la parte más interesante:
Esto es básicamente una interpolación de cadenas, pero 10 bytes más corto que el incorporado.
fuente
/// , 116 bytes
Pruébalo en línea!
La entrada es la siguiente:
Funciona utilizando una plantilla básica y agregando espacios y caracteres donde sea necesario.
El recuento de bytes aumentó porque Ørjan Johansen se dio cuenta de que al principio no manejaba el espacio. Pero el problema es saber arreglado.
fuente
/*/\/y0\/ y\/\/y1\/ y\//**********/y///s/yx/
y luego te espaciass
./00/0|0//01/0|1//10/1|0//11/1|1//|/<\\y>//z/<y>x//<y>0/ //<y>1/ //<\\y\>///s/z/
puede manejar longitud arbitraria.Python 2 ,
101,91 bytes113 bytesPruébalo en línea!
¡La entrada es una cadena de 0 y 1 de longitud 1 o 2! ¡Eso es 0,01,10 u 11!
+12 bytes: se corrigió el espaciado en \ para la entrada de longitud dos.
fuente
0 < length of input < 11
".Carbón , 34 bytes
Pruébalo en línea! El enlace es a la versión detallada del código. Explicación:
Imprime los pares izquierdos de
/
sy\
s.Imprima la entrada justificada a la derecha en la posición actual.
Recorre las ramas.
Mueve la posición de la rama. Podemos hacer esto porque la raíz se imprimió justificada a la derecha para que la rama central esté siempre en la misma posición absoluta.
Imprime la entrada.
Imprima el par correcto de
/
y\
.Imprime el sufijo de la rama.
Moverse a la primera hoja.
Recorre las hojas.
Imprima la entrada y el sufijo de rama y hoja.
Pasar a la siguiente hoja. Nota: Si el espacio en blanco al final fuera aceptable,
F²⁺⁺⁺θι궶
se ahorraría un byte.fuente