PowerShell v3 +, 55 bytes
param($a,$b)1..$b|%{"|$((' ','-')[$_-in1,$b]*($a-2))|"}
Toma entrada $a
y $b
. Bucles de 1
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ícita Write-Output
ocurre al finalizar el programa, con el separador de línea nueva predeterminado.
Alternativamente, también a 55 bytes
param($a,$b)1..$b|%{"|$((''+' -'[$_-in1,$b])*($a-2))|"}
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
PS C:\Tools\Scripts\golfing> .\draw-an-ascii-rectangle.ps1 10 3
|--------|
| |
|--------|
PS C:\Tools\Scripts\golfing> .\draw-an-ascii-rectangle.ps1 7 6
|-----|
| |
| |
| |
| |
|-----|
Ị
:)