As pirâmides maias eram (e são) uma parte importante da arquitetura antiga, que geralmente era usada para fins religiosos.
Geralmente eram pirâmides de degraus, mas os degraus de cada uma eram íngremes demais para subir. Os padres subiam ao topo deles através de escadas alternativas para realizar cerimônias. As pirâmides também foram usadas como pontos de referência por causa de sua altura, e às vezes até usadas como locais de sepultamento para oficiais de alto escalão.
O desafio
Escreva um programa que possa imprimir um esquema de pirâmide com base nas especificações do usuário (veja abaixo).
Exigências
Faça uma entrada de duas variáveis separadas por espaço.
A entrada deve ser aceita através do STDIN (ou alternativa mais próxima).
A saída deve ser através de STDOUT (ou alternativa mais próxima).
Entrada
Altura como qualquer número inteiro positivo. Isso é usado como a largura do nível base (em blocos). Cada nível subsequente da pirâmide tem a largura
n - 1
onden
é a largura do piso anterior (em blocos).Tamanho do bloco que será 1 ou qualquer número inteiro positivo, ímpar ≤ (menor que) 10.
Blocos
O tamanho do bloco determinado determina a largura (e a altura) de cada peça individual. Essencialmente, existem i^2
espaços dentro da caixa visível, onde i
está o tamanho do bloco.
Um bloco 1x1 ficaria assim:
+++
| |
+++
Enquanto um bloco 5x5 ficaria assim:
+++++++
| |
| |
| |
| |
| |
+++++++
Blocos horizontalmente adjacentes
Os blocos horizontalmente lado a lado devem ter suas paredes do meio fundidas em uma.
Você deve ter isso:
+++++
| | |
+++++
Em vez de algo como isto:
++++++
| || |
++++++
Blocos verticalmente adjacentes (bônus de -5%)
Blocos lado a lado verticalmente têm uma exceção especial: a parede do meio pode ser mesclada em uma.
Então, em vez de blocos 1x1 parecidos com este:
+++
| |
+++
+++++
| | |
+++++
Eles poderiam ficar assim:
+++
| |
+++++
| | |
+++++
Exemplos
Input: 3 1
Output:
+++
| |
+++
+++++
| | |
+++++
+++++++
| | | |
+++++++
OR
+++
| |
+++++
| | |
+++++++
| | | |
+++++++
Input: 2 3
Output:
+++++
| |
| |
| |
+++++
+++++++++
| | |
| | |
| | |
+++++++++
OR
+++++
| |
| |
| |
+++++++++
| | |
| | |
| | |
+++++++++
Placar
Para ser classificado no placar, coloque sua resposta neste formato:
# Language, Score
Ou se você receber o bônus -5%:
# Language, Score (Bytes - 5%)
Sua pontuação é apenas um número inteiro. Se sua pontuação for decimal, arredondar para o número inteiro.
1 1
?3 2
produziria?2 3
, seria sair quandon - 1 = 0
, onden
é a largura do piso anterior em blocos.Respostas:
Pitão, 45 (47 bytes - 5%)
Experimente aqui .
fonte
JavaScript (ES6), 161 (169-5%)
166 (174-5%)Usando seqüências de modelo, as duas novas linhas são significativas e contadas.
Teste a execução do trecho abaixo em um navegador EcmaScript 6. Firefox ok, não Chrome, porque falta suporte para a atribuição de desestruturação .
Código explicado após o snippet.
Menos Golfe
fonte
Rubi, 124 (130 - 5%)
Com comentários
fonte
Python 2, 117 (123 bytes)
A idéia é construir em cima dos tijolos
p
como+++++++++
e lateralv
como| | |
. A parte superior começa como+
e é aumentada porn+1
+
cada camada. O lado começa como|
e é aumentado porn
espaços e a|
. Cada camada, aumentamos as partes superior e lateral, depois imprimimos uma parte superior en
laterais.Para centralizá-los, primeiro imprimimos um recuo
l
. Consiste em vários espaços que escalam com a altura atualh
. Para atualizá-lo, diminuímos a variável heighth
até que ela atinja0
, após o que a camada atual é nivelada contra a borda esquerda da tela. Imprimimos a parte superior mais uma vez para formar a camada inferior e pronto.fonte
Python 2, 200 (210 - 5%)
Eu usei a multiplicação de strings e removi espaços extras.
fonte