Me gusta el arte ascii y me aburro mucho, así que encontré algunos personajes ascii y comencé a hacer cosas al azar, mario castle de 8 bits, laberintos y arcos. Descubrí que los arcos se podían apilar fácilmente de una manera ordenada.
╔═══════╗
║╔═════╗║
║║╔═══╗║║
║║║╔═╗║║║
╨╨╨╨─╨╨╨╨
Desafío
Cree un programa, función o cualquier otro formato estándar que acepte un número entero mayor o igual a 0 (a menos que esté haciendo la bonificación) y genere un arte ascii con la cantidad de arcos especificados.
Casos de prueba
Entrada:
7
Salida:
╔═════════════╗
║╔═══════════╗║
║║╔═════════╗║║
║║║╔═══════╗║║║
║║║║╔═════╗║║║║
║║║║║╔═══╗║║║║║
║║║║║║╔═╗║║║║║║
╨╨╨╨╨╨╨─╨╨╨╨╨╨╨
Alt:
+-------------+
|+-----------+|
||+---------+||
|||+-------+|||
||||+-----+||||
|||||+---+|||||
||||||+-+||||||
||||||| |||||||
---------------
Entrada:
1
Salida:
╔═╗
╨─╨
Alt:
+-+
| |
---
- Si el número entero es 0, no muestre nada
- Esta pregunta estará en utf-8, cada personaje contará como un "byte"
- Este es codegolf, por lo que gana la respuesta más corta.
- Tiene la opción de usar en
+-+
lugar de╔═╗
, en---
lugar de╨─╨
y en|
lugar de║
Bonificación (no se decidió si permitir esto en la versión alternativa porque no sería tan difícil)
-10% si el programa admite números negativos y voltea los arcos así
╥╥╥╥─╥╥╥╥
║║║╚═╝║║║
║║╚═══╝║║
║╚═════╝║
╚═══════╝
+---+
en la parte superior, los lados|
y la parte inferior de los-----
cuales me parece bien. Juanpotato, si desea utilizar caracteres no ascii, indique la codificación en la pregunta. Tal como está, estoy votando para cerrar como poco claro.Respuestas:
CJam, 59 bytes
Pruébalo aquí!
fuente
Python 2, 106 bytes (94 caracteres)
Muy claro. Imprime línea por línea con un número variable de barras horizontales y verticales. La última línea se imprime por separado.
Siento que me faltan algunas optimizaciones. El hecho de que los caracteres son de varios bytes significa que no puede hacer algo así
'║╨'[n>0]
, por lo que no encontré una buena manera de imprimir la última línea en el bucle. Es feo que haya tanta manipulación en el mostrador. Me gustaría actualizar las cadenas directamente, comos+='║'
, pero el índice también se usa para barras horizontales.fuente
+-|
para construir los arcos, vea op para ver ejemplos.Perl,
7882 caracteresLamentablemente, no pude encontrar una manera de aprovechar el bono sin aumentar el tamaño en más del 10%. Todavía puedo prevalecer.
Sin golf
Bastante sencillo, de verdad. Acumula la línea de fondo (
╨$n╨
) de forma incremental, mientras acorta la línea de arriba (══
) en dos caracteres, terminando cuando ya no se puede acortar, por lo que no tengo que meterme con los contadores.fuente
─
para n = 0, pero no debería imprimir nada.-n
: ¡ Pruébelo en línea!Bash, 124 bytes (112 caracteres)
Ejecución de muestra:
fuente
Japt
-R
, 29 bytesUsos
+
y-
. Sacrificado 4 bytes para manejar el sangriento validación de entrada !Intentalo
Explicación
fuente
0
If the integer is 0 then don't output anything
del desafío: /0
,false
o una cadena vacía a un costo de algunos bytes, pero no sé si alguno de estos sería aceptable, excepto, tal vez, la cadena vacía, lo que me costaría 5 bytes (0
solo me costaría 1)JavaScript (ES6), 101 caracteres
Explicación
Función recursiva que imprime cada línea.
Prueba
La prueba no utiliza el parámetro predeterminado para la compatibilidad del navegador.
Mostrar fragmento de código
fuente
PHP (109 caracteres)
Todavía necesito deshacerme de ese str_repeat, pero la mayoría de las alternativas no manejarán los caracteres mulyibyte.
fuente
Retina , 79 caracteres
Pruébalo en línea.
Esto usa una nueva característica en Retina que reemplaza un número decimal
\d+
con una lista de tantos caracteres$0$*═
.fuente
Swift (209 bytes)
Probablemente Swift no es el mejor lenguaje para esto, esta es la primera vez que intento hacer un desafío de código de golf:
fuente
Ruby, 90 bytes (74 caracteres)
Ejecución de muestra:
fuente
Haskell,
151162 bytesEditar: olvidé tratar
0
como entradafuente
𝔼𝕊𝕄𝕚𝕟, 54 caracteres / 95 bytes
Try it here (Firefox only).
Explicación
NOTA: esto hace uso de buenos bloques de copia antiguos para llegar a los lugares donde no se puede alcanzar la declaración de variables ordinarias.
fuente
Sed, 97 bytes (81 caracteres)
(Código de 96 bytes (80 caracteres) + opción de línea de comando de 1 carácter)
Entrada esperada como entero unario .
Ejecución de muestra:
Sed, 105 bytes (75 caracteres)
(104 bytes (74 caracteres) de código + opción de línea de comando de 1 carácter)
Entrada esperada como entero unario .
Ejecución de muestra:
fuente
Lienzo , 15 bytes.
Pruébalo aquí!
Explicación:
fuente