É aniversário do meu amigo em breve e, como ele é um programador e amante de arte ASCII, pensei em fazer um bolo ASCII para ele!
Infelizmente, continuo esquecendo sua idade atual, então eu gostaria de ter um programa para o meu forno ASCII, que assa um bolo com um número especificado de velas, para que eu não precise fazê-lo novamente se estiver errado com o dele. era.
Os fornos ASCII possuem apenas capacidade limitada de memória e armazenamento; portanto, use o menor número possível de bytes .
Sua tarefa:
Escreva um programa que envie um bolo de aniversário para o console, com tantas velas quanto a entrada especificar.
Os requisitos do bolo são:
- Ele deve ter uma borda, formada por linhas horizontais
-
e verticais|
e vértices+
. - Pelo menos 5 caracteres de largura (incluindo borda do bolo
|
) - Pelo menos 5 caracteres de altura (incluindo borda do bolo
-
) - Deve haver um caractere de espaço em branco
entre a borda do bolo e a primeira base da vela (não a chama), de cada lado, exceto se houver chama nesse espaço. Uma chama ou base de vela não deve se sobrepor às bordas do bolo.
- A largura máxima do bolo é de 9 caracteres, portanto, há um máximo de 5 velas por linha.
- Como não queremos que o nosso bolo seja bidimensional, ele precisa ter mais 2 linhas de altura, para dar algum volume. Adicione outra borda na parte inferior e conecte os vértices com os que estão acima deles, novamente usando os caracteres ASCII de cima (
-
,|
e+
).
Os requisitos de vela são:
- Consiste na base
|
e na chama*
, com a chama empilhada em cima da base. - As velas não podem estar diretamente adjacentes uma à outra, exceto na diagonal.
- As velas são colocadas da esquerda para a direita e de cima para baixo, com 5 em uma linha no máximo.
(Nota: se houvesse 5 velas na linha anterior, a próxima linha não poderá ter 5 também, pois elas seriam adjacentes.)
Notas Adicionais:
- A largura do bolo depende do número de velas na primeira linha, mas deve ter no mínimo 5 caracteres e no máximo 9 caracteres.
- As velas são preenchidas começando na linha superior, indo da esquerda para a direita. Uma vez que uma linha estiver cheia, a próxima deve começar na linha abaixo da primeira.
Entrada:
Você pode aceitar um número no formato (razoável) que desejar.
Para esse desafio, você pode supor que o número esteja entre 0 e 2 31 (não incluindo 0), mesmo que eu não reconheça alguém com essa idade.
Resultado:
Você pode retornar uma sequência ou gravar diretamente o bolo resultante no console de saída.
Regras:
- As brechas padrão são proibidas.
- Isso é código-golfe , então o código mais curto em bytes, em qualquer idioma, vence.
Exemplos:
Entrada: 8
+-----------+
| * * * * * |
| |*|*|*| | |
| | | | |
| |
+-----------+
| |
+-----------+
Entrada: 2
+-----+
| * * |
| | | |
| |
+-----+
| |
+-----+
Entrada: 12
+-----------+
| * * * * * |
| |*|*|*|*| |
| *|*|*| | |
| | | | |
| |
+-----------+
| |
+-----------+
Boa sorte!
Respostas:
Carvão ,
767170 6646 bytesExperimente online! Link é a versão detalhada do código. Editar: salvou 1 byte graças a @ASCII_Only. Economizou 20 bytes enormes ao descobrir uma maneira elegante de desenhar as velas. Explicação:
Calcule o tamanho de todo o bolo, incluindo volume extra e apenas a parte superior do bolo, para que possam ser desenhados. ((
=
= ASCII 61) = (+
= ASCII 43) + 9 * 2 para o volume extra.)Mova o cursor para a primeira linha de 5 velas. Passe por cada vela.
Imprima uma vela e mova para a direita dois caracteres para a próxima vela.
No entanto, após as velas (indexadas a zero) 4, 8, 13, 17, 22, etc., etc. (que estão no final de uma linha),
mova o cursor para a primeira vela na próxima linha. Isso funciona em linhas ímpares e pares!
fonte
A
no início: P (btw obrigado por encontrar um outro jogador (não tão) caso extremo)Geléia , 67 bytes
Um link monádico que pega um número e retorna uma lista de caracteres ou um programa completo que imprime a saída.
Experimente online!
Quão?
fonte
Japonês , 94 bytes
Experimente online!
fonte