É 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!