(Inspirado por esta pregunta )
Objetivo
Su tarea es escribir un programa o función para imprimir una versión ASCII del logotipo de desbordamiento de pila en STDOUT
\|/
(-)
(-)
(-)
(-)
Su programa debe tomar dos entradas, denominadas aquí H y N. La altura del "contenedor" de la pila (los paréntesis) está determinada por H. El número de elementos en la pila está determinado por N. Si N> H, el la pila se "desbordará".
De entrada y salida
H determinará la altura de los contenedores
Por ejemplo:
H = 1:
( )
H = 2:
( )
( )
H = 3:
( )
( )
( )
H siempre será al menos 1
N determinará cuántos elementos hay en la pila. Los siguientes ejemplos son todos H = 2:
N = 0
( )
( )
N = 1
( )
(-)
N = 2
(-)
(-)
N = 3
\
(-)
(-)
N = 4
\|
(-)
(-)
N = 5
\|/
(-)
(-)
N = 6
\|/
(-)-
(-)
N = 7
\|/
(-)-
(-)-
N nunca será más que 2H+3
(En otras palabras, la pila nunca atravesará el suelo).
Reglas
- No hay lagunas estándar.
- Su programa no debe producir ningún error.
- Todos los casos de prueba deben pasar.
- Puede ingresar H y N de la forma que desee.
- Dudo seriamente que su idioma tenga algo incorporado para esto.
- Cada línea puede tener opcionalmente un espacio extra al final. Una línea en blanco sobre una pila donde N <= H es opcional, como lo es una nueva línea final.
- Este es el código de golf , por lo que gana el código más corto en bytes.
Casos de prueba
Además de todos los casos de prueba H = 2 de la sección Entrada / Salida, deben pasar todos los siguientes casos de prueba:
H = 1, N = 1
(-)
H = 1, N = 5
\|/
(-)-
H = 4, N = 7
\|/
(-)
(-)
(-)
(-)
H = 5, N = 0
( )
( )
( )
( )
( )
Tablas de clasificación
Aquí hay un fragmento de pila para generar una tabla de clasificación regular y una descripción general de los ganadores por idioma.
Para asegurarse de que su respuesta se muestre, comience con un título, usando la siguiente plantilla de Markdown:
# Language Name, N bytes
¿Dónde N
está el tamaño de su envío? Si mejora su puntaje, puede mantener los puntajes antiguos en el título, tachándolos. Por ejemplo:
# Ruby, <s>104</s> <s>101</s> 96 bytes
Si desea incluir varios números en su encabezado (por ejemplo, porque su puntaje es la suma de dos archivos o desea enumerar las penalizaciones de la bandera del intérprete por separado), asegúrese de que el puntaje real sea el último número en el encabezado:
# Perl, 43 + 2 (-p flag) = 45 bytes
También puede hacer que el nombre del idioma sea un enlace que luego aparecerá en el fragmento de la tabla de clasificación:
# [><>](http://esolangs.org/wiki/Fish), 121 bytes
Respuestas:
Pyth,
434140 bytesPruébalo en línea. Banco de pruebas.
Primer pase, rápido y sucio. Entrada a STDIN como
N\nH
.Explicación
J
(JE
) y reste de la primera entrada (el número de elementos). (-QJE
)K
. (K-QJE
)hK-QJE
)max(0, previous)
. Esto se requiere ya que los números negativos romperían el siguiente paso. (g#0hK-QJE
)" \|/"
para obtener la primera línea e imprima. (<" \|/"g#0hK-QJE
)N
nuevorange(0, J)
. (VJ
) Para cadaN
impresión, la concatenación de lo siguiente: (s[
)"("
(\(
)" "
si hay al menosN+1
espacios libres en la pila (<N_K
), de lo"-"
contrario. (?<N_Kd\-
)")"
(\)
)"-"
si hay al menosN+4
piezas desbordadas en la pila (<N-K3
), de lo""
contrario. (*<N-K3\-
)fuente
JavaScript (ES6),
105102 bytes@Edit: Guardado 3 bytes gracias a @PatrickRoberts.
fuente
substring
consubstr
para guardar 3 bytes, y reemplazari+n<h?' ':'-'
con'- '[i+n<h]
para guardar 2 bytes y reemplazari+h+3<n?'-':''
con' -'[i+h+3<n]
para guardar 1 byte. Eso te llevará a menos de 100substr
ignoré los subíndices negativos o no, pero no puedo usar sus otros consejos porque los subíndices de cadena son cadenas, por lo que los booleanos no son lo suficientemente buenos.JavaScript (ES6),
126122112 bytesPrueba
Prueba alternativa (si su navegador no es compatible con ES6)
Vea la prueba en Babeljs.io y marque "evaluar".
Enfoque alternativo interesante a 136 bytes
Esto mueve las cantidades repetidas a la cadena de plantilla y usa una expresión regular y reemplazar para inyectar los grupos repetidos. Lamentablemente, la firma
.replace()
es demasiado larga.fuente
C ++ 14 (función lambda), 196
Guardado 1 byte gracias a Quentin.
Guardado 2 bytes gracias a Adam Martin.
La función en sí misma ocupa 157 bytes.
Véalo en acción aquí .
Versión sin golf:
fuente
include
syusing namespace std;
en el recuento de bytes, a menos que su respuesta sea un programa completo (que no lo es).CJam, 57 bytes
Pruébalo aquí.
Definitivamente podría usar alguna mejora. La idea es construir una cuadrícula donde las
-\|/-
celdas se reemplacen con enteros consecutivos, por ejemploY luego reemplazarlos con los caracteres correctos (potencialmente espacios) al final.
fuente
Python 2,
10110098 bytesfuente
print
son innecesariosJavaScript (ES6),
8780 bytesUtiliza la recursividad para crear la cadena de salida de abajo hacia arriba.
EDITAR : Gracias a @Neil por eliminar 7 bytes de 87 bytes
Original
Fragmento de prueba:
fuente
SyntaxError
para mí.JavaScript (ES6),
149139137 bytesMe gustó la idea de @ MartinEnder sobre indexar los
-\|/
personajes y quería ver cómo le iría en ES6. Aparentemente no lo hice tan bien. Tratando de averiguar si esto podría mejorarse usandofor...of
.Ediciones
.replace
, moviendo la indexación directamente en sug()
lugar.f=
en el segundo bytePrueba
fuente
Java,
186177 bytesIntente sin golf en línea
fuente
Excel, 131 bytes
Entrada tomada como una tupla, Altura
H
adentroA1
,N
adentroB1
. La fórmula que contiene la celda debe tener activado el ajuste de texto. Sugiera usar una fuente monoespaciada.fuente
A1
yB1
y añadir la nota simple que esto requeriría la célula llamando a tener la opción de ajuste de texto para ser verdad. También quizás para obtener la alineación adecuada debería tener una fuente monoespaciada como Courier New o Lucidia ConsoleC ++ 11,
155148145 bytesSin golf :
Uso :
fuente
Python 3,
134121118111 bytesPruébelo aquí: https://repl.it/CYL1/0
Sin golf:
Me gustaría haber agregado el desbordamiento lateral a la comprensión de la lista, pero no pude incluirlo, así que tuve que ir con el ciclo while.¡Guardado 13 bytes!fuente
'\|/'[:max(0,n-h)]
para que sea como la solución Python 2.Perl 5 , 91 bytes
Pruébalo en línea!
fuente
Pip , 50 bytes
Pruébalo en línea!
Ugh, esto es demasiado largo ... aunque no sé cómo acortarlo más. La indexación cíclica, que suele ser útil, esta vez cuesta bytes adicionales.
fuente
PowerShell ,
109108104 bytesPruébalo en línea!
Perdí mucho en indexación costosa pero aún decente. Sin embargo, no estoy seguro de que mi índice matemático sea óptimo. Robó algo de lógica de las otras respuestas para guardar un byte. También recordó la precedencia de hacer estallar algunos parens para -4 bytes.
fuente
05AB1E , 45 bytes
Definitivamente se puede jugar al golf. No estoy muy contento con él en su forma actual tbh.
Pruébelo en línea o verifique todos los casos de prueba .
Explicación:
fuente
LR'(ì')«¹x‚3+¬UŸ¦ζJ¹XŸJ¦1úr)˜»
y eso es solo la mitad.