Dados dois números inteiros como entrada em uma matriz, desenhe um retângulo, usando o primeiro número inteiro como largura e o segundo como altura.
Ou, se o seu idioma suportar, os dois números inteiros podem ser dados como entradas separadas.
Suponha que a largura e a altura nunca serão menores que 3 e sempre serão fornecidas.
Exemplo de saídas:
[3, 3]
|-|
| |
|-|
[5, 8]
|---|
| |
| |
| |
| |
| |
| |
|---|
[10, 3]
|--------|
| |
|--------|
Isso é código-golfe, então a resposta com a menor quantidade de bytes vence.
Ị
:)Matlab,
696556 bytesObrigado @WeeingIfFirst e @LuisMendo por alguns bytes =)
Isso é realmente simples no Matlab: primeiro faça uma matriz do tamanho desejado, depois indexe a primeira e a última linha para inserir o
-
e faça o mesmo com a primeira e a última coluna a inserir|
.Por exemplo,
f(4,3)
retornafonte
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)=' '
como char. Depois disso, você pode preencher com números e eles são convertidos automaticamente para char.z
mantém seu tipo originalJavaScript (ES6), 63 bytes
fonte
Haskell,
6255 bytesExemplo de uso:
A função auxiliar
f
pega uma lista de dois elementos[a,b]
e um númeron
e retorna uma lista de uma
seguido porn-2
b
s seguido por uma
. Podemos usarf
três vezes: para construir a linha superior / inferior:,f "|-" i
uma linha do meio:f "| " i
e a partir dessas duas o retângulo inteiro:f [<top>,<middle>] j
(nota:j
não aparece como parâmetro porg i
causa da aplicação parcial).Edit: @dianne salvou alguns bytes combinando dois
Char
argumentos em umString
de comprimento 2. Muito obrigado!fonte
#
ideia!(a:b)#n=a:([3..n]>>b)++[a]
e escrever["|-"#i,"| "#i]#j
Python 2,
6158 bytes-3 bytes graças a @flornquake (remova parênteses desnecessários; use
h
como contador)Os casos de teste são ideológicos
fonte
('- '[1<i<h])
não precisa dos parênteses.exec"print'|'+'- '[1<h<%d]*(w-2)+'|';h-=1;"%h*h
h
como contador é inteligente! Obrigado.PHP, 74 bytes
fonte
!$i|$n==++$i
vez de!$i|$n-1==$i++
$i++&&$n-$i?" ":"-"
$i++&&$n-$i?" ":"-"
->"- "[$i++&&$n-$i]
(-2)Vimscript,
9383757473666463 bytesCódigo
Exemplo
Explicação
Observe que ele não está sendo usado,
norm!
portanto pode interferir nos mapeamentos personalizados do vim!fonte
MATL , 19 bytes
Experimente online!
Explicação
A abordagem é semelhante à usada nesta outra resposta . O código cria uma matriz numérica do formulário
e então seus valores são usados como índices (com base em 1 modular) na cadeia
'|-| '
de caracteres para produzir o resultado desejado.fonte
05AB1E ,
232220 bytesEntrada tomada como altura e largura.
Explicação
Experimente online!
Economizou 2 bytes graças a Adnan
fonte
F„ -N_N¹<Q~è²Í×'|.ø,
.C, 73 bytes
fonte
Python 2, 56 bytes
flornquake salvou um byte.
fonte
%c
conversão:'-%*c'%(h-1,45)
%*c
não era nada! Obrigado. :)'-%%%dc'%~-h%45
também funciona para o mesmo comprimento.Lisp comum, 104 bytes
Golfe:
Ungolfed:
fonte
Turtlèd , 40 bytes
Intérprete é
ligeiramentenão grampeadoExplicação
fonte
Mathematica,
6764 bytesAgradeço a lastresort e TuukkaX por me lembrarem que os jogadores de golfe devem ser sorrateiros e economizar 3 bytes!
Implementação direta. Retorna uma matriz de seqüências de caracteres.
fonte
0<1
no lugar deTrue
j==1
pode ser reduzido paraj<1
ei==1
parai<1
.Python 3,
10495 bytes(feedback de @ mbomb007: -9 bytes)
(meu primeiro código de golfe, agradeço o feedback)
fonte
range(y)
em vez derange(0,y)
, e sen
não for negativo, você pode usarif n<1or n==~-y else
Lote, 128 bytes
Toma largura e altura como parâmetros da linha de comando.
fonte
Haxe,
112106 bytesCasos de teste
fonte
Java 135 bytes
Golfe:
fonte
o+=x "|\n"
:? Você quis colocar um+
lá?PowerShell v3 +, 55 bytes
Pega entrada
$a
e$b
. Loops de1
para$b
. Cada iteração, construímos uma única string. O meio é selecionado a partir de uma matriz de duas cadeias de comprimento único, depois multiplicadas por cadeias$a-2
, enquanto é cercada por tubos. As seqüências resultantes são deixadas no pipeline e produzidas via implícitaWrite-Output
acontece na conclusão do programa, com o separador de nova linha padrão.Como alternativa, também a 55 bytes
Este surgiu porque eu estava tentando jogar golfe na seleção de array no meio usando uma string. No entanto, desde os
[char]
tempos[int]
não está definido, perdemos a economia ao precisar converter como uma string com parens e''+
.Ambas as versões requerem v3 ou mais recente para o
-in
operador.Exemplos
fonte
PHP, 82 bytes
indexando uma sequência estática, incluindo a nova linha
fonte
Ruby,
595452 bytesOh, isso é muito mais simples :)
Teste executado em ideone
fonte
\n
.i
ej
. Substituai
a definição porx-=2
. Em vez dej
, basta usar(y-2)
.Perl, 48 bytes
Inclui +1 para
-n
Dê tamanhos como 2 linhas em STDIN
Apenas o código:
fonte
Lua,
12093 bytesEconomizou alguns bytes removendo estúpido por complexidades.
Ungolfed:
Experimente no Repl.it
fonte
Python 2, 67 bytes
Exemplos
fonte
MATL ,
2117 bytesEssa é uma abordagem um pouco diferente da do Deus MATL .
Obrigado @LuisMendo por toda a ajuda!
Experimente Online!
fonte
PHP 4.1, 76 bytes
Isso pressupõe que você tenha as
php.ini
configurações padrão para esta versão, incluindoshort_open_tag
eregister_globals
habilitado.Isso requer acesso através de um servidor web (por exemplo: Apache), passando os valores pelas variáveis session / cookie / POST / GET.
A chave
W
controla a largura e a chaveH
controla a altura.Por exemplo:
http://localhost/file.php?W=3&H=5
fonte
Python 3, 74 caracteres
fonte
Swift (2.2) 190 bytes
Acho que o Swift 3 poderia jogar muito mais isso, mas não sinto vontade de baixar o Swift 3.
fonte
F #, 131 bytes
fonte