Dados dos enteros como entrada en una matriz, dibuje un rectángulo, usando el primer entero como ancho y el segundo como alto.
O, si su idioma lo admite, los dos enteros se pueden dar como entradas separadas.
Suponga que el ancho y la altura nunca serán inferiores a 3, y siempre se darán.
Resultados de ejemplo:
[3, 3]
|-|
| |
|-|
[5, 8]
|---|
| |
| |
| |
| |
| |
| |
|---|
[10, 3]
|--------|
| |
|--------|
Este es el código de golf, por lo que gana la respuesta con la menor cantidad de bytes.
Ị
:)Matlab,
696556 bytesGracias @WeeingIfFirst y @LuisMendo por algunos bytes =)
Esto es realmente simple en Matlab: primero haga una matriz del tamaño deseado, luego indexe la primera y la última fila para insertar
-
, y haga lo mismo con la primera y la última columna para insertar|
.Por ejemplo
f(4,3)
devuelvefuente
z([1,b],1:a)=45;z(1:b,[1,a])=124;z=[z,'']
z(b,a)=' ';z([1,b],:)=45;z(:,[1,a])=124
z(b,a)=' '
se inicia como char. Después de eso, puede completar con números y se convierten automáticamente en char.z
mantiene su tipo originalJavaScript (ES6), 63 bytes
fuente
Haskell,
6255 bytesEjemplo de uso:
La función auxiliar
f
toma una lista de dos elementos[a,b]
y un númeron
y devuelve una lista de unoa
seguido den-2
b
s seguido de unoa
. Podemos usarf
tres veces: para construir la línea superior / inferior:,f "|-" i
una línea media:f "| " i
y de esos dos el rectángulo completo:f [<top>,<middle>] j
(nota:j
no aparece como un parámetrog i
debido a una aplicación parcial).Editar: @dianne guardó algunos bytes combinando dos
Char
argumentos en unoString
de longitud 2. ¡Muchas gracias!fuente
#
idea!(a:b)#n=a:([3..n]>>b)++[a]
y escribiendo["|-"#i,"| "#i]#j
Python 2,
6158 bytes-3 bytes gracias a @flornquake (eliminar paréntesis innecesarios; usar
h
como contador)Los casos de prueba están en ideone
fuente
('- '[1<i<h])
No necesita los paréntesis.exec"print'|'+'- '[1<h<%d]*(w-2)+'|';h-=1;"%h*h
h
como contador es inteligente! Gracias.PHP, 74 bytes
fuente
!$i|$n==++$i
lugar de!$i|$n-1==$i++
$i++&&$n-$i?" ":"-"
$i++&&$n-$i?" ":"-"
->"- "[$i++&&$n-$i]
(-2)Vimscript,
9383757473666463 bytesCódigo
Ejemplo
Explicación
Tenga en cuenta que no se está utilizando,
norm!
por lo que podría interferir con las asignaciones personalizadas de vim.fuente
MATL , 19 bytes
Pruébalo en línea!
Explicación
El enfoque es similar al utilizado en esta otra respuesta . El código crea una matriz numérica del formulario.
y luego sus valores se usan como índices (basados en 1, modulares) en la cadena
'|-| '
para producir el resultado deseado.fuente
05AB1E ,
232220 bytesEntrada tomada como altura, luego ancho.
Explicación
Pruébalo en línea!
Guardado 2 bytes gracias a Adnan
fuente
F„ -N_N¹<Q~è²Í×'|.ø,
.C, 73 bytes
fuente
Python 2, 56 bytes
flornquake salvó un byte.
fuente
%c
conversión:'-%*c'%(h-1,45)
%*c
ni siquiera era una cosa! Gracias. :)'-%%%dc'%~-h%45
También funciona para la misma longitud.Lisp común, 104 bytes
Golfizado:
Sin golf:
fuente
Turtlèd , 40 bytes
Intérprete es
ligeramentemás largo sin micrófonos ocultosExplicación
fuente
Mathematica,
6764 bytes¡Gracias a lastresort y TuukkaX por recordarme que los golfistas deben ser astutos y ahorrar 3 bytes!
Implementación directa. Devuelve una matriz de cadenas.
fuente
0<1
en lugar deTrue
j==1
se puede reducir aj<1
, yi==1
ai<1
.Python 3,
10495 bytes(comentarios de @ mbomb007: -9 bytes)
(mi primer código de golf, agradezco los comentarios)
fuente
range(y)
lugar derange(0,y)
, y sin
nunca es negativo, puede usarif n<1or n==~-y else
Lote, 128 bytes
Toma ancho y alto como parámetros de línea de comandos.
fuente
Haxe,
112106 bytesCasos de prueba
fuente
Java 135 bytes
Golfizado:
fuente
o+=x "|\n"
? ¿Querías poner un+
allí?PowerShell v3 +, 55 bytes
Toma entrada
$a
y$b
. Bucles de1
a$b
. Cada iteración, construimos una sola cadena. El medio se selecciona de una matriz de dos cadenas de longitud única, luego se multiplica por cadenas por$a-2
, mientras está rodeado de tuberías. Las cadenas resultantes se dejan en la tubería, y la salida por vía implícitaWrite-Output
ocurre al finalizar el programa, con el separador de línea nueva predeterminado.Alternativamente, también a 55 bytes
Esto ocurrió porque estaba tratando de jugar golf en la selección de matriz en el medio usando una cadena en su lugar. Sin embargo, dado que los
[char]
tiempos[int]
no están definidos, perdemos los ahorros al necesitar convertirlos en una cadena con parens y''+
.Ambas versiones requieren v3 o más reciente para el
-in
operador.Ejemplos
fuente
PHP, 82 bytes
indexar una cadena estática que incluye la nueva línea
fuente
Ruby,
595452 bytesOh, eso es mucho más simple :)
Prueba de funcionamiento en ideone
fuente
\n
.i
yj
. Reemplacei
la definición conx-=2
. En lugar dej
, solo úsalo(y-2)
.Perl, 48 bytes
Incluye +1 para
-n
Dar tamaños como 2 líneas en STDIN
Solo el código:
fuente
Lua,
12093 bytesAhorró bastantes bytes al eliminar estupideces sobre complejidades.
Sin golf:
Pruébalo en Repl.it
fuente
Python 2, 67 bytes
Ejemplos
fuente
MATL ,
2117 bytesEste es un enfoque ligeramente diferente al de MATL-God .
¡Gracias @LuisMendo por toda la ayuda!
Pruébalo en línea!
fuente
PHP 4.1, 76 bytes
Esto supone que tiene la
php.ini
configuración predeterminada para esta versión, que incluyeshort_open_tag
yregister_globals
habilitada.Esto requiere acceso a través de un servidor web (por ejemplo: Apache), pasando los valores sobre las variables de sesión / cookie / POST / GET.
La tecla
W
controla el ancho y la teclaH
controla la altura.Por ejemplo:
http://localhost/file.php?W=3&H=5
fuente
Python 3, 74 caracteres
fuente
Swift (2.2) 190 bytes
Creo que Swift 3 podría jugar mucho más, pero no tengo ganas de descargar Swift 3.
fuente
F #, 131 bytes
fuente