Supongamos un mosaico infinito de hexágonos compuestos de |/\
caracteres.
/ \ / \ / \ / \
| | | | |
\ / \ / \ / \ / etc.
| | | |
\ / \ / \ /
Dada la entrada n > 0
, emite una porción triangular de ese mosaico como se muestra en los ejemplos a continuación, anclado con un _
en el medio de un hexágono:
n=1
\_/
n=2
\/ \/
\_/
n=3
\ | /
\/ \/
\_/
n=4
\/ \ / \/
\ | /
\/ \/
\_/
n=5
\ | | /
\/ \ / \/
\ | /
\/ \/
\_/
n=6
\/ \ / \ / \/
\ | | /
\/ \ / \/
\ | /
\/ \/
\_/
n=7
\ | | | /
\/ \ / \ / \/
\ | | /
\/ \ / \/
\ | /
\/ \/
\_/
n=8
\/ \ / \ / \ / \/
\ | | | /
\/ \ / \ / \/
\ | | /
\/ \ / \/
\ | /
\/ \/
\_/
and so on
Reglas
- Las nuevas líneas iniciales / finales u otros espacios en blanco son opcionales, siempre que los caracteres se alineen adecuadamente.
- Un programa completo o una función son aceptables. Si es una función, puede devolver el resultado en lugar de imprimirlo.
- La salida puede ser a la consola, guardada como una imagen, devuelta como una lista de cadenas, etc.
- Las lagunas estándar están prohibidas.
- Este es el código de golf, por lo que se aplican todas las reglas habituales de golf, y gana el código más corto (en bytes).
Respuestas:
Python 2 , 86 bytes
Pruébalo en línea!
¡Uno de los trucos de Erik me permitió jugar 3 bytes! Guardado 3 bytes gracias a Jonathan Allan.
Como funciona esto
En primer lugar, esto obtiene información de STDIN y la asigna a dos variables separadas
i
yk
. Luego, mientras la variablei
es verdadera, la decrementamos y generamos las cadenas en consecuencia; Esta es una forma abreviada de bucle desde la entrada: 1 hasta 0.Generando las cuerdas
Lo dividiré en más partes:
En primer lugar, se consigue el espacio inicial con
" "*(k+~i)
. Dado quei
se asigna a través del rango (entrada, 0] , debemos restarlo dek
(nuestra entrada original almacenada de forma segura), disminuir y repetir un espacio tantas veces.+"\\"
- Agrega el personaje"\"
a los espacios de arriba.' / |\ '[i%2::2]
- Genera nuestras dos cadenas, a saber ,"/ \ "
y" | "
, de la siguiente manera:Si
i
es impar, i% 2 es 1 , por lo tanto,[i%2::2]
devuelve cada 2 caracteres de nuestra cadena más grande, comenzando en el índice 1 (0 indexado).Si
i
es par, i% 2 es 1 , por lo tanto, el mecanismo anterior hace lo mismo excepto que comienza en el índice 0 .+~-i*
- Repite la cadena generada arriba, ya sea"/ \ "
o" | "
, i-1 veces, y la agrega a las otras cadenas. El beneficio del operador bit a bit (~
- Complemento a nivel de bit , equivalente a i restado de -1 ) es que no requiere paréntesis en este contexto.[:k-~i]
- Obtiene todos los caracteres de las cadenas concatenadas anteriormente hasta el índice k- ~ i = k - (-1 - i) = k + 1 + i .+"_/"[i>0:]
- Esto solo se agrega"/"
si i ≥ 1 , de lo contrario, se agrega_/
.Ejemplo completo / detalles de ejecución
Tomemos un ejemplo de cómo funcionan las cosas para una entrada de 4 :
fuente
i-=1
al inicio del bucle y use una formación del lado derecho ligeramente diferente para bajarlo a 87 bytes .Python 2 , 90 bytes
Pruébalo en línea!
fuente
05AB1E , 33 bytes
Pruébalo en línea!
fuente
Mathematica, 131 bytes
devuelve una lista de cadenas
Pruébalo en línea!
fuente
Retina ,
129119112 bytesPruébalo en línea!
fuente
Carbón , 26 bytes
Pruébalo en línea! El enlace es a la versión detallada del código.
fuente
Python 2 ,
1231121101091009896 bytesPruébalo en línea!
fuente
-1-a
con~a
(como hice en mi respuesta).Python 2 , 103 bytes
Pruébalo en línea!
fuente
APL (Dyalog) ,
9793 bytesPruébalo en línea!
fuente
SOGL V0.12 ,
2827 bytesPruébalo aquí!
fuente
Haskell ,
9695 bytesPruébalo en línea!
0 indexado y devuelve una lista de líneas.
fuente
Haskell,
10199 bytesDevuelve una lista de líneas.
Pruébalo en línea!
Cómo funciona:
Editar: @Laikoni guardó dos bytes. ¡Gracias!
fuente
([1,3..n-1]>>)
se puede usar en lugar de([1..div n 2]>>)
.Java (OpenJDK 8) ,
315306 bytesPruébalo en línea!
fuente
Java (OpenJDK 8) , 198 bytes
Finalmente lo conseguí por debajo de 200 bytes. Probablemente publicará una explicación más tarde.
Pruébalo en línea!
fuente
JavaScript (ES6),
8985 bytesManifestación
Mostrar fragmento de código
fuente
CJam, 43
Pruébalo en línea
fuente
PHP, 89 + 1 bytes
Ejecutar como tubería
-nR
o probarlo en línea .fuente
Pyth ,
4644 bytesPruébalo aquí!
fuente