A tarefa
Nesse desafio, sua tarefa é desenhar uma representação artística ASCII de várias pilhas de caixas de altura crescente. Você recebe como entrada o número de pilhas, que é um número inteiro positivo. A primeira pilha contém uma caixa de tamanho 2x2
. A segunda pilha contém 2 caixas de tamanho 3x3
. Em geral, a k
pilha th contém k
caixas de tamanho (k+1)x(k+1)
.
As bordas de cada caixa são desenhadas usando os caracteres -|+
e seu interior consiste em espaço em branco. Caixas adjacentes compartilham suas bordas e os cantos sempre devem ser desenhados +
, mesmo quando fazem parte de uma borda de outra caixa.
Exemplos
Saída para 1
:
++
++
Saída para 2
:
+-+
| |
+-+
++ |
++-+
Saída para 3
:
+--+
| |
| |
+--+
| |
+-+ |
| +--+
+-+ |
++ | |
++-+--+
Saída para 5
:
+----+
| |
| |
| |
| |
+----+
| |
| |
| |
+---+ |
| +----+
| | |
| | |
+---+ |
| | |
| +----+
+--+ | |
| +---+ |
| | | |
+--+ | |
| | +----+
+-+ +---+ |
| +--+ | |
+-+ | | |
++ | | | |
++-+--+---+----+
Regras e Pontuação
A entrada pode ser recebida do STDIN, como um argumento de linha de comando ou como um argumento de função. A saída deve ir para STDOUT ou equivalente mais próximo. Qualquer quantidade finita de espaço em branco à direita é permitida, assim como as novas linhas anteriores e à direita, mas não pode haver espaços precedentes extras.
Isso é código-golfe, então a menor contagem de bytes vence. As brechas padrão não são permitidas.
n
en-1
são relativamente excelentes. Duas vantagens nunca se sobrepõem.Integer.MaxValue
como entrada.Integer.MaxValue
ou equivalente.Respostas:
CJam,
64 6058 bytesConstruindo cada coluna de cada vez.
Experimente online aqui
fonte
Java (
407349 caracteres)Alguns caracteres graças a @Zgarb e @Geobits
Código
Não tenho certeza se isso é ideal, mas é a minha primeira tentativa, provavelmente tentarei colocá-lo em um idioma de golfe melhor posteriormente. Todas as sugestões são bem-vindas!
Expandido
Confira aqui.
fonte
&&
e||
com&
e|
. 2) Mova asint
declarações parafor
(for(int i=0,j,x,z;...
). 3) Você tem um aparelho demais no final de sua função no golfe.a+1<=b+1
; eles podem ser substituídos pora<=b
.q*q+1
provavelmente deve apenas ser atribuído a outra variável. Você o usa 9 vezes mais ou menos e pode economizar um monte dizendoa=q*q+1
uma vez. Além disso,q*(q+1)
é apenasq*q+q
.Python 2,
144128 bytesUm pouco girando. Um pouco mexendo em todos os lugares.
fonte
Python, 188 bytes
Calcula matematicamente o caractere em cada
x,y
posição. Foi complicado fazer as+
impressões em ambos os lados de cada caixa, bem como parar os itens mais à direita+
do que seriam asn+1
caixas.fonte
long
que não tenha limite superior.C # - 304 bytes (função)
ou 363 bytes (código completo)
Eu tentei evitar declarações if. Ungolfed:
fonte
long
lugar.Ruby (205 bytes)
Pega o número como argumentos de linha de comando. Começa com uma falha na liderança de novas linhas, mas isso é permitido.
fonte
JavaScript (ES6), 293 bytes
Eu executei isso no Firefox. Ignore o que
"
o console adiciona entre as strings. Isso é principalmente material do ES5, mas vou tentar jogar mais isso.Ungolfed / ES5
fonte
Python 2,
294290Eu consegui funcionar, mas ainda preciso jogar mais. Estou tão feliz, no entanto, que foi difícil (pelo menos para mim)!
Provavelmente adicionarei uma explicação mais tarde, a menos que seja imediatamente claro para alguém ...? Eu meio que duvido.
Experimente aqui
fonte
Python - 243 bytes
Gera todas as colunas, substituindo as sobreposições nas colunas, exceto a primeira. Depois, preenche os espaços, transpõe e imprime.
Estou pensando em traduzir para Pyth, mas precisarei de um substituto para a função pad.
fonte