El otro día, mi hijo me pidió que le construyera una escalera usando bloques Lego-ish. Y se me ocurrió algo como esto:
Entonces mi hijo me pidió un programa que utilizara la menor cantidad de bytes que generara una escalera similar en la pantalla de una computadora. No soy tan bueno en code-golf , así que necesito tu ayuda. Necesito un programa que:
- Recibe un número entero positivo con el número de niveles que debe tener la escalera.
- Emite un dibujo de una escalera, con el patrón que ve en la imagen.
La salida estará en formato de texto, pero los ladrillos se pueden distinguir uno del otro. Por ejemplo, puede usar el carácter '█' como medio bloque y pintarlo del color que desee, o simplemente elegir cualquier personaje de su elección.
Restricciones
- Los bloques deben ser de tres colores diferentes, que se usarán el mayor tiempo posible (si la entrada es 1 o 2, no hay suficientes bloques para usar los tres colores). Si lo desea, puede usar los caracteres '░▒▓', por ejemplo, o simplemente seleccionar tres caracteres diferentes.
- No hay dos bloques del mismo color o patrón que puedan estar de lado a lado en una sola fila.
A mi hijo realmente no le importan los espacios finales o las nuevas líneas siempre que se dibuje una escalera.
Ejemplos (perdón por la mala elección de personajes):
Input: 1
Output:
██
Input: 2
Output:
██
▓▓
Input: 3
Output:
██
▓▓
██░░
Input: 5
Output:
██
██
██░░
██░░
██░░▓▓
Respuestas:
Jalea ,
21 1916 bytesUn programa completo que imprime el resultado.
Usos
00
,11
y22
como los bloques.Pruébalo en línea!
¿Cómo?
fuente
Python 2 , 55 bytes
Pruébalo en línea!
Ciclos entre bloques de
22, 44
, excepto la fila superior es00
. Por ejemplo, en la entrada 10, imprimeImprime filas de longitud creciente
i=2,3,..
creando un espacio para longitudes impares, repitiendo losi
tiempos del patrón y truncando a la longitudi
. El patrón es2244
para todas las filas, excepto la primerai=2
para la que es0
. Esto se logra con la expresión aritmética2%i*1122
.fuente
JavaScript (ES6), 80 bytes
Mostrar fragmento de código
JavaScript (ES6), 87 bytes
Solución previa
fuente
SOGL ,
31282725 bytesExplicación:
utilizando esta técnica
Ejemplo de salida para 9:
no competidora, 22 bytes
El comando
m
ha sido documentado en la primera confirmación SOGL , simplemente no implementado.fuente
05AB1E ,
2221201817 bytesUtiliza el hecho interesante de que
4^(N+2)/5 = [3,12,51,204,...] = b[11,1100,110011,11001100,...]
Pruébalo en línea!
Explicación
fuente
PHP,
6159funciona más o menos como las versiones de Python, pero usa los tres colores si es posible. No hay una nueva línea al final.
fuente
aa<?for...
.Pyth , 29 bytes
¡Pruébelo en línea!
Explicaciones
Estoy seguro de que hay muchas maneras de acortar ese código, pero en este momento estoy muy cansado ... Lo intentaré más tarde.
fuente
Lote, 125 bytes
Nota: guarde esto en CP437 o CP850 o algo así. Funciona girando los colores cada vez. Como no puedo mapear sobre la cadena para realizar la rotación, uso cuatro reemplazos, usando espacios como una etapa temporal. Esto también me permite prefijar un espacio en cada línea, de modo que dos espacios se conviertan en un nuevo bloque. Salida de muestra:
fuente