Dados dois números inteiros positivos, 'a' e 'b', saída de uma "caixa" ascii-art que é um caracteres de largura e b caracteres de altura. Por exemplo, com '4' e '6':
****
* *
* *
* *
* *
****
Simples né? Aqui está o detalhe: a borda da caixa deve ter os caracteres "a" e "b" alternados. Isso começa no canto superior esquerdo e continua em espiral no sentido horário. Por exemplo, o exemplo anterior com 4 e 6 deve ser
4646
6 4
4 6
6 4
4 6
6464
A e B podem ser números de dois dígitos. Por exemplo, as entradas "10" e "3" devem gerar isso:
1031031031
1 0
3013013013
Para manter a saída relativamente pequena, você não precisa suportar números de três ou mais dígitos. Além disso, como as entradas são restritas a números inteiros positivos , '0' é uma entrada inválida, que você não precisa manipular.
Aqui estão mais alguns casos de teste:
Input: (3, 5)
Output:
353
5 5
3 3
5 5
353
Input: (1, 1)
Output:
1
Input: (4, 4)
Output:
4444
4 4
4 4
4444
Input: (27, 1)
Output:
271271271271271271271271271
Input: (1, 17)
Output:
1
1
7
1
1
7
1
1
7
1
1
7
1
1
7
1
1
Input: (12, 34):
Output:
123412341234
4 1
3 2
2 3
1 4
4 1
3 2
2 3
1 4
4 1
3 2
2 3
1 4
4 1
3 2
2 3
1 4
4 1
3 2
2 3
1 4
4 1
3 2
2 3
1 4
4 1
3 2
2 3
1 4
4 1
3 2
2 3
1 4
432143214321
Você pode receber entrada e saída em qualquer formato razoável, e as brechas padrão são proibidas. Como se trata de código-golfe, a resposta mais curta em bytes vence!
a
for 1, é a parede esquerda ou a parede direita?Respostas:
Pitão ,
6551 bytesExperimente online!
fonte
C #, 301 bytes
Tenho certeza de que muito mais golfe pode ser feito aqui, mas estou feliz por ter uma solução que funcionou.
Eu encontrei um bug onde a linha de fundo estava na ordem errada, caramba!
Versão antiga: 280 bytes
fonte
Python 2, 199 bytes
fonte
Ruby, 128 bytes
Gera nova linha final se a altura for 1.
Link da Ideone: https://ideone.com/96WYHt
fonte
[w,h]*""
vez de"%d%d"%[w,h]
por 4 bytes e não precisa dos parêntesess[q-2,w].reverse
, mas precisará de um espaço após o:
, então -1 byte.JavaScript,
213212202Certamente tem espaço para melhorias.
Editar: salvou um byte graças a TheLethalCoder
fonte
`${c}${a}`.repeat(l+1)
que você pode economizar um byte.W=W.substr(0,a-2).replace(/./g," ")
o mesmo queW=" ".repeat(a-2)
? (Será que o seu código realmente trabalhar paraa=1
?)C, 311 bytes
Usa automaticamente bibliotecas incluídas
stdio.h
estring.h
.fonte
JavaScript (ES6), 171 bytes
Onde
\n
representa o caractere literal de nova linha. Cria uma sequência de dígitos repetidos e decide o que concatenar com base em qual linha estamos; a linha superior é apenas a fatia inicial da sequência de dígitos repetidos, a linha inferior (se houver) é uma fatia invertida do meio da sequência, enquanto as linhas intermediárias são criadas usando caracteres extraídos de outras partes da sequência.fonte
(w,h)=>
paraw=>h=>
salvar um byteTSQL, 291 bytes
Golfe:
Ungolfed:
Violino
fonte
Python 3,
155148 bytesGolfou mais 7 bytes:
Substituído
2*w+2*h-4or 1
pormax(1,2*w+2*h-4)
e['',s[-i-1]][w>1]
para(s[-i-1]if w>1else'')
.Versão anterior:
fonte