Outro dia, meu filho me pediu para construir uma escada usando blocos de Lego. E eu vim com algo assim:
Então meu filho me pediu um programa usando o menor número de bytes que gerasse uma escada semelhante na tela do computador. Eu não sou tão bom em golfe de código , então preciso da sua ajuda. Eu preciso de um programa que:
- Recebe um número inteiro positivo com o número de níveis que a escada precisa ter.
- Produz um desenho de uma escada, com o padrão que você vê na imagem.
A saída estará no formato de texto, mas os tijolos podem ser distinguidos um do outro. Por exemplo, você pode usar o caractere '█' como meio bloco e pintá-lo em qualquer cor que desejar, ou apenas escolher qualquer caractere de sua escolha.
Restrições:
- Os blocos precisam ter três cores diferentes, que serão usadas o maior tempo possível (se a entrada for 1 ou 2, não haverá blocos suficientes para usar as três cores). Se desejar, você pode usar os caracteres '░▒▓', por exemplo, ou apenas selecionar três caracteres diferentes.
- Dois blocos da mesma cor ou padrão não podem ficar lado a lado em uma única linha.
Meu filho realmente não se importa com espaços à direita ou novas linhas, desde que uma escada seja desenhada.
Exemplos (desculpe pela má escolha de caracteres):
Input: 1
Output:
██
Input: 2
Output:
██
▓▓
Input: 3
Output:
██
▓▓
██░░
Input: 5
Output:
██
██
██░░
██░░
██░░▓▓
Respostas:
Geléia ,
21 1916 bytesUm programa completo imprimindo o resultado.
Usa
00
,11
e22
como os blocos.Experimente online!
Quão?
fonte
Python 2 , 55 bytes
Experimente online!
Alterna entre blocos de
22, 44
, exceto a linha superior00
. Por exemplo, na entrada 10, imprimeImprime linhas de comprimento crescente
i=2,3,..
, criando um espaço para comprimentos ímpares, repetindo osi
tempos do padrão e truncando para o comprimentoi
. O padrão é2244
para todas as linhas, exceto a primeirai=2
para a qual é0
. Isso é alcançado com a expressão aritmética2%i*1122
.fonte
JavaScript (ES6), 80 bytes
Mostrar snippet de código
JavaScript (ES6), 87 bytes
Solução anterior.
fonte
SOGL ,
31282725 bytesExplicação:
usando esta técnica
Exemplo de saída para 9:
não concorrente, 22 bytes
O comando
m
foi documentado no 1º commit do SOGL , apenas não implementado.fonte
05AB1E ,
2221201817 bytesUsa o fato interessante de que
4^(N+2)/5 = [3,12,51,204,...] = b[11,1100,110011,11001100,...]
Experimente online!
Explicação
fonte
PHP,
6159funciona praticamente como as versões python, mas usa todas as três cores, se possível. Nenhuma nova linha à direita.
fonte
aa<?for...
.Pitão , 29 bytes
Teste online!
Explicações
Tenho certeza de que há várias maneiras de encurtar esse código, mas agora estou cansado de tudo ... Tentarei mais tarde.
fonte
Lote, 125 bytes
Nota: Salve isso no CP437 ou CP850 ou algo parecido. Funciona girando as cores cada vez. Como não consigo mapear a sequência para executar a rotação, utilizo quatro substituições, usando espaços como um estágio temporário. Isso também me permite prefixar um espaço a cada linha, para que dois espaços se transformem em um novo bloco. Saída de amostra:
fonte