Las pirámides mayas fueron (y son) una parte importante de la arquitectura antigua, que generalmente se usaban con fines religiosos.
Por lo general, eran pirámides escalonadas, pero los escalones de cada una eran demasiado empinados para subir. Los sacerdotes subirían a la cima de ellos a través de escaleras alternativas para realizar ceremonias. Las pirámides también se usaron como puntos de referencia debido a su altura, y a veces incluso se usaron como sitios de entierro para funcionarios de alto rango.
El reto
Escriba un programa que pueda imprimir un esquema piramidal basado en las especificaciones del usuario (ver más abajo).
Requisitos
Tome una entrada de dos variables separadas por espacios.
La entrada debe aceptarse a través de STDIN (o la alternativa más cercana).
La salida debe ser a través de STDOUT (o la alternativa más cercana).
Entrada
Altura como cualquier entero positivo. Esto se usa como el ancho del nivel base (en bloques). Cada nivel posterior de la pirámide tiene el ancho
n - 1
donden
está el ancho del piso anterior (en bloques).Tamaño de bloque que será 1 o cualquier entero impar impar ≤ (menor que) 10.
Bloques
El tamaño de bloque dado determina el ancho (y la altura) de cada pieza individual. Esencialmente, hay i^2
espacios dentro del cuadro visible donde i
está el tamaño del bloque.
Un bloque 1x1 se vería así:
+++
| |
+++
Mientras que un bloque 5x5 se vería así:
+++++++
| |
| |
| |
| |
| |
+++++++
Bloques adyacentes horizontalmente
Los bloques horizontalmente uno al lado del otro deben tener sus paredes intermedias fusionadas en una sola.
Usted debe tener presente:
+++++
| | |
+++++
En lugar de algo como esto:
++++++
| || |
++++++
Bloques adyacentes verticalmente (-5% de bonificación)
Los bloques verticales uno al lado del otro tienen una excepción especial: la pared intermedia se puede fusionar en una sola.
Entonces, en lugar de bloques 1x1 que se ve así:
+++
| |
+++
+++++
| | |
+++++
Ellos podrían tener este aspecto:
+++
| |
+++++
| | |
+++++
Ejemplos
Input: 3 1
Output:
+++
| |
+++
+++++
| | |
+++++
+++++++
| | | |
+++++++
OR
+++
| |
+++++
| | |
+++++++
| | | |
+++++++
Input: 2 3
Output:
+++++
| |
| |
| |
+++++
+++++++++
| | |
| | |
| | |
+++++++++
OR
+++++
| |
| |
| |
+++++++++
| | |
| | |
| | |
+++++++++
Marcador
Para ser clasificado en el marcador, ponga su respuesta en este formato:
# Language, Score
O si obtienes el bono -5%:
# Language, Score (Bytes - 5%)
Tu puntaje es solo un número entero. Si su puntaje es un decimal, redondee al número entero.
1 1
?3 2
?2 3
, saldría cuandon - 1 = 0
donden
está el ancho del piso anterior en bloques.Respuestas:
Pyth, 45 (47 bytes - 5%)
Pruébalo aquí .
fuente
JavaScript (ES6), 161 (169-5%)
166 (174-5%)Usando cadenas de plantilla, las 2 nuevas líneas son significativas y contadas.
Pruebe a ejecutar el fragmento a continuación en un navegador EcmaScript 6. Firefox está bien, no Chrome porque carece de soporte para tareas de desestructuración .
Código explicado después del fragmento.
Menos golf
fuente
Rubí, 124 (130 - 5%)
Con comentarios
fuente
Python 2, 117 (123 bytes)
La idea es construir la parte superior de los ladrillos
p
como+++++++++
y de ladov
como| | |
. La parte superior comienza como+
y es aumentada porn+1
+
cada capa. El lado comienza como|
y es aumentado porn
espacios y a|
. Cada capa, aumentamos la parte superior y los lados, luego imprimimos una parte superior y losn
lados.Para centrarlos, primero imprimimos una sangría
l
. Consiste en una serie de espacios que se escalan con la altura actualh
. Para actualizarlo, disminuimos la variable de alturah
hasta que golpea0
, después de lo cual la capa actual está al ras contra el borde izquierdo de la pantalla. Imprimimos la parte superior una vez más para hacer la capa inferior, y listo.fuente
Python 2, 200 (210 - 5%)
Usé la multiplicación de cuerdas y espacios adicionales despojados.
fuente