+ - + + - + | | + - + + - + | | | | | | | | + - + + - + + - + + - +
O povo de ASCIIville está reconstruindo sua cidade e desenhando novas plantas. Seu trabalho é desenhar a nova cidade com base em quantos prédios eles querem.
A entrada será quantos edifícios existem. Cada edifício é metade da altura da entrada (arredondado para cima, se for ímpar), sem incluir a parte superior e inferior do edifício.
Vamos desenhar um exemplo básico de 4
+ - + + - + + - + + - + | | | | | | | | | | | | | | | | + - + + - + + - + + - +
Como você pode ver aqui, existem dois |
s em cada edifício porque a entrada era quatro. Mas há um problema! (o exemplo acima está incorreto e o exemplo na parte superior desta postagem é a saída real de 4)
Para cada edifício que não é um número primo, sua altura diminui um. Se o número é divisível por 3 , 5 ou 10 , diminui mais um. Se é divisível por dois ou mais desses números, o valor deduzido aumenta ( 10 é divisível por 10 e 5, e não é primo, por isso é deduzido por 3 ).
Vejamos um exemplo com uma entrada de 5
.
+ - + + - + | | + - + + - + + - + | | | | | | | | | | | | | | | | | | | | + - + + - + + - + + - + + - +
Aqui está um exemplo de 7
+ - + + - + + - + | | + - + + - + + - + | | | | | | | | | | | | + - + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + - + + - + + - + + - + + - + + - + + - +
E um exemplo de 10
+ - + + - + + - + | | + - + + - + + - + | | + - + | | | | | | | | | | + - + | | | | + - + | | | | | | | | | | | | | | | | | | + - + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + - + + - + + - + + - + + - + + - + + - + + - + + - + + - +
E de volta para 6
+ - + + - + | | + - + + - + + - + | | | | | | | | | | + - + | | | | | | | | | | | | + - + + - + + - + + - + + - + + - +
Regras:
- Se um número é deduzido tanto que sua altura é menor ou igual a zero, ele não é mostrado, mas resta um espaço para ele (não acredito que isso seja possível,
6
é o mais próximo que encontrei de chegar a zero) . - Espaços à direita são permitidos.
- A largura de cada edifício deve ser 2.
- Sua entrada pode ser do stdin ou codificada no programa.
- Seu programa deve ser um programa completo , sem funções.
- Seu programa deve ser capaz de 4-15 compilações. Números 0-3 e negativos não são necessários e não são especificados para fazer nada, o que significa que eles podem gerar um erro, imprimir lixo ou não fazer nada.
Respostas:
CJam,
68 66 5855 bytesIsso é muito longo por enquanto. Mas um começo.
ATUALIZAÇÃO: Agora codifique as entradas até 15 em vez de calcular o deslocamento. Sugestão de Sp3000
Experimente online aqui
fonte
Python 2,
247245237229bytesfonte
C #,
223205 bytesIsso tira proveito da necessidade de ir apenas para 15 edifícios.
260 bytes
E uma resposta mais genérica que funcionará para qualquer número de edifícios.
fonte
Python 2, 163 bytes
A parte de verificação da primalidade empresta o algoritmo do @ xnor a partir daqui .
Se codificarmos as 15 primeiras compensações, podemos obter 137 bytes :
Estou assumindo espaços à direita no final de cada linha, mas se a pergunta significa espaços à direita após toda a saída, são +9 bytes para
.rstrip()
.fonte
Groovy,
234,225,223219 bytesAbusando do limite de 15 prédios
fonte
Swift,
375, 350 bytesAqui está o código recuado
B
contém o número de edifícios.p
retorna 1 quando um número não é primo.Preciso importar o Foundation para usar a
ceil
função.Não consegui otimizar o código apenas para os quinze casos, mas acabarei fazendo isso mais tarde.
edit: Tomando conselhos @Kametrixom e otimizar a
mod
peça (eu esqueci de reduzir o comprimento do nome var).fonte
Foundation
comDarwin
a salvar alguns bytesimport UIKit
vez deimport Darwin
.