Dada una entrada de dos enteros n y m , genera una escalera ASCII de longitud n y tamaño m .
Esta es una escalera ASCII de longitud 3 y tamaño 3:
o---o
| |
| |
| |
+---+
| |
| |
| |
+---+
| |
| |
| |
o---o
Esta es una escalera ASCII de longitud 5 y talla 1:
o-o
| |
+-+
| |
+-+
| |
+-+
| |
+-+
| |
o-o
Esta es una escalera ASCII de longitud 2 y tamaño 5:
o-----o
| |
| |
| |
| |
| |
+-----+
| |
| |
| |
| |
| |
o-----o
Ser especifico:
La longitud ( n ) representa cuántos cuadrados está compuesta por la escalera.
El tamaño ( m ) representa el ancho y la altura del interior de, es decir, sin contar los "bordes", cada cuadrado.
Cada cuadrado está formado por el área interior llena de espacios, rodeada por
-
s en la parte superior e inferior,|
s en la izquierda y derecha,+
ys en las cuatro esquinas.Las fronteras entre los cuadrados se fusionan, por lo que dos líneas seguidas se
+--...--+
fusionan en una sola.Las esquinas de toda la escalera se reemplazan con el personaje
o
.Opcionalmente, puede generar una nueva línea final.
La longitud de la escalera ( n ) siempre será ≥ 2, y el tamaño ( m ) siempre será ≥ 1.
La entrada se puede tomar como una cadena separada por comas / espacios en blanco, una matriz / lista / etc., o dos funciones / línea de comando / etc. argumentos Los argumentos se pueden tomar en el orden que sea más conveniente / más golfista.
Como se trata de código de golf , gana el código más corto en bytes.
Consejo: Los ejemplos anteriores también se pueden usar como casos de prueba.
Respuestas:
Pyth, 34 bytes
Banco de pruebas
Toma argumentos de nueva línea separados en STDIN.
Utiliza una función auxiliar
:
, que construye cada tipo de cadena vertical a partir de tres caracteres, luego se replica según sea necesario, se transpone y se une en nuevas líneas.fuente
Rubí, 71
sin golf en el programa de prueba
fuente
;
despuésh=0
, necesita espacio despuésputs
. Pero su puntuación solo crece con 1 personaje, ya que hay un espacio adicional antesputs
.CJam,
4342 bytesNo estoy satisfecho con el puntaje. Pero no soy Dennis, ¿verdad?
La entrada es de 2 elementos separados por espacios. Longitud primero
Explicación
fuente
JavaScript (ES6), 89
... repetir, repetir, repetir ...
Prueba
fuente
document.getElementById('elem').
podría ser reemplazado porelem.
! +1 para esto, pero por favor, ¿podría señalar algunos documentos sobre esto?C #, 1412 bytes
... Mi primer intento de CodeGolf, no es probable que gane, pero funciona, así que aquí vamos:
fuente
using System;class P{static int m;static void Main(){int n = int.Parse(Console.ReadLine());m = int.Parse(Console.ReadLine());M('o','-');for(int k=0;k<n;k++){for(int i=0;i<m;i++){M('|',' ');}if(k!=n-1){M('+','-');}}M('o','-');Console.ReadKey();}static void M(char x,char y){Console.WriteLine(x+new string(y,m)+x);}}
using System;class P{static int m;static void Main(){int n=int.Parse(Console.ReadLine());m=int.Parse(Console.ReadLine());M('o','-');for(int k=0;k<n;k++){for(int i=0;i<m;i++){M('|',' ');}if(k!=n-1){M('+','-');}}M('o','-');Console.ReadKey();}static void M(char x,char y){Console.WriteLine(x+new string(y,m)+x);}}
using C=System.Console;class P{static void Main(){int i,k,n=int.Parse(C.ReadLine()),m=int.Parse(C.ReadLine());System.Action<char,char> M=(x,y)=>C.WriteLine(x+new string(y,m)+x);M('o','-');for(k=0;k<n;k++){for(i=0;i<m;i++){M('|',' ');}if(k<n-1){M('+','-');}}M('o','-');}}
. Sin embargo, es muy probable que haya más potencial aquí, simplemente cambiando un poco la forma de hacer las cosas.Julia, 87 bytes
Esta es una función que acepta dos enteros y devuelve una cadena.
Sin golf:
fuente
pb - 147 bytes
Este es el tipo de desafío que, por derecho, pb debería ser realmente bueno. Dibujar imágenes simples con personajes es exactamente para lo que se diseñó pb. Por desgracia, supongo que es solo un lenguaje prolífico.
Primero toma la longitud de entrada, seguida del tamaño. Toma datos en forma de valores de bytes, por ejemplo:
python -c 'print(chr(5) + chr(7))' | ./pbi.py ladder.pb
Mira, una animación divertida!
Con comentarios:
fuente
Golpe puro,
132 130 128127 bytesSí, podría dejar 1 byte más reemplazando el último
${p% *}
, pero prefiero esto:Muestra:
fuente
Haskell,
10097 bytesEjemplo de uso:
Cómo funciona:
Editar: @Christian Irwan encontró 3 bytes. ¡Gracias!
fuente
m=init$[1..l]>>("|"!" "<$u)++["+"!"-"]
(_:m)=[1..l]>>["+"!"-"]++("|"!" "<$u)
_:m=[1..l]>>["+"!"-"]++("|"!" "<$u)
funcionabrainfuck - 334 bytes
Esperaba que esto fuera mucho más corto.
Esto configura una "cadena" que se parece
| (...) |
y una que parece+----(...)----+
, imprimiendo cada una según sea necesario, con una carcasa especial para elo
s en la parte superior e inferior.Requiere un intérprete que use celdas de 8 bits y le permite ir a la izquierda desde la celda 0 (ya sea en celdas negativas o en bucle). En mi experiencia, estas son las configuraciones predeterminadas más comunes.
Con comentarios:
fuente
PowerShell, 77
80fuente
Jolf, 36 bytes
Pruébalo aquí!
Explicación
fuente
Perl, 98 bytes
fuente
+
signo en su código, ¿ha considerado que los peldaños intermedios tienen+
signos en cada extremo?($n,$m)=@ARGV;
y asumir que ya están configurados, no estoy seguro de si eso está en el espíritu o no. Tendré que buscarlo.@ARGV
. Además, cuando responda a alguien, recuerde incluir @username para que reciba una alerta. No necesito hacerlo ya que esta es tu publicación.C, 122 bytes
Pruébalo en línea .
fuente
Tcl, 187 bytes
Este código está hecho para ponerlo en un archivo con argumentos ingresados en la línea de comando. proporcione el número de cajas y el ancho en ese orden.
fuente
PHP, 81bytes
Espera 2 argumentos, pasados al llamar al comando PHP directamente. El primero es el tamaño y el segundo es el número de pasos.
Puede requerir algunas mejoras.
fuente
Python 2, 94 bytes
'No golfista':
fuente
Perl 5 , 91 + 1 (-a) = 92 bytes
Pruébalo en línea!
fuente
Pip
-l
, 35 bytesPruébalo en línea!
Explicación
Algunas otras versiones
Intenté muchos enfoques diferentes tratando de atrapar a Pyth ...
Soy particularmente aficionado a
t**b
los que usan las matemáticas para generar el patrón vertical de la escalera:La
1000200020001
continuación pueden utilizarse para generar los patroneso|||+|||+|||o
y- - - -
, que componen la escalera. Desafortunadamente, no pude hacer que este enfoque fuera más corto que el enfoque de unión / ajuste.fuente