Basta ya de buscar por todo internet ya que llegaste al sitio indicado, tenemos la solución que quieres y sin liarte.
Solución:
Pyth, 616055 49 bytes
j*vwmjk*Qd++Rm012Jmms}k++Rhd5U-d4T=T13+Lm1T_mP_dJ
Pruébelo en línea: demostración
edición 1: combine las dos declaraciones que generan la banda y el triángulo (ver más abajo)
edición 2: No vi que podemos usar ningún símbolo. 5 bytes guardados editar
editar 3: @ Calvin’sHobbies permitió traducir la imagen base. Dado que mi enfoque se basó en esta idea, esto ayudó bastante. -6 bytes
Y para el Bono de galletas:
.w*vw*RQ++Rm012Jmm*K255}k++Rhd5U-d4T=T13+LmKT_mP_dJ
Esto es solo 2 bytes más largo (51 bytes) y genera el archivo o.png
. Para la entrada 5n4
genera la siguiente imagen:
Explicación:
El patrón de pata de gallo se ve realmente bastante irregular. Pero si llevamos las 7 columnas de la izquierda a la derecha y las 5 filas superiores a la parte inferior, obtenemos un patrón mucho más agradable:
.#####...................
..#####..................
...#####.................
....#####................
.....#####...............
#.....#####..............
##.....#####.............
###.....#####............
####.....####............
#####.....###............
######.....##............
#######.....#............
########.................
#############.....#######
##############.....######
###############.....#####
################.....####
#################.....###
##################.....##
#############.#####.....#
#############..#####.....
#############...#####....
#############....#####...
#############.....#####..
#############......#####.
#############.......#####
Primero produzco el bloque 13×13 superior izquierdo:
.#####.......
..#####......
...#####.....
....#####....
.....#####...
#.....#####..
##.....#####.
###.....#####
####.....####
#####.....###
######.....##
#######.....#
########.....
Hay 2 desigualdades simples, que describen las dos #
-áreas. La banda se puede describir por y + 1 <= x <= y + 5
y el triángulo se puede describir por x <= y - 5
. He combinado estas dos condiciones:
Jmms}k++Rhd5U-d4T=T13
=T13 T = 13
m T map each d of [0, 1, ..., 12] to:
the list produced by
m T map each k of [0, 1, ..., 12] to:
+Rhd5 the list [d+1, d+2, ..., d+5]
+ extended by
U-d4 the list [0, 1, ..., d - 5]
}k test if k is in the list
s and convert the boolean result to 1 or 0
J assign this 13x13 block to J
Luego +Rm012
agrega 12 ceros al final de cada fila, para obtener el bloque superior de 25x13.
El bloque inferior de 25x13 ahora es realmente simple:
+Lm1T_mP_dJ
m J map each row d of J to:
P_d reverse the row and pop the last element
_ reverse the order the rows
+Lm1T add T ones at the beginning of each row.
Todo lo que queda ahora es repetir el patrón e imprimirlo.
j*vwmjk*Qd+upperlower implicit: Q = first input number
+upperlower combine the two blocks to a 25x26 block
m map each row d to:
*Qd repeat d Q times
jk and join to a string
*vw read another number from input and repeat
j join by newlines and print
La diferencia con el Bono de galletas código:
255
en lugar de1
- en lugar de
mjk*Qd
yo suelo*RQ
, ya que no quiero un string .w
guarda este 2D-array a archivo (lo convierte a png implícitamente)
CJam, 10673 71 bytes
0000000: 71 7e 22 04 94 51 af 40 6e 73 b2 68 3a e1 7e 13 f2 a1 q~"[email protected]
:.~...
0000012: 3e 1d de f5 64 9c 6b 0f 27 4c 36 d7 81 3d 30 35 56 f8 >...d.k.'L6..=05V.
0000024: cd e8 cd 7c dc 90 31 59 40 8b 8c 22 32 35 36 62 32 32 ...|[email protected]"256b22
0000036: 62 41 73 33 39 2a 2e 2a 73 32 35 2f 2a 66 2a 4e 2a bAs39*.*s25/*f*N*
Huellas dactilares 1
y 0
en lugar de .
y #
. Pruébelo en línea en el intérprete de CJam.
Cómo funciona
q~ e# Read and evaluate all input. This pushes W and H.
"…" e# Push an encoding of run lengths of the characters in the output.
256b22b e# Convert from base 256 to base 22.
As39* e# Push "10" and repeat it 39 times.
.* e# Vectorized character repetition; multiply each base 22 digit (run
e# length) by the corresponding character of "10…10".
s25/ e# Flatten and split into chunks of length 25.
* e# Repeat the resulting array of rows H times.
f* e# Repeat each row W times.
N* e# Join the rows, separating by linefeeds.
Bono de galletas
0000000: 27 50 6f 31 70 71 7e 5d 5f 5b 32 35 5f 29 5d 2e 2a 5c 'Po1pq~]_[25_)].*
0000012: 7e 22 04 94 51 af 40 6e 73 b2 68 3a e1 7e 13 f2 a1 3e ~"[email protected]:.~...>
0000024: 1d de f5 64 9c 6b 0f 27 4c 36 d7 81 3d 30 35 56 f8 cd ...d.k.'L6..=05V..
0000036: e8 cd 7c dc 90 31 59 40 8b 8c 22 32 35 36 62 32 32 62 ..|[email protected]"256b22b
0000048: 41 73 33 39 2a 2e 2a 73 32 35 2f 2a 66 2a 73 2b 4e 2a As39*.*s25/*f*s+N*
imprime un BitMap portátil en lugar de arte ASCII.
A continuación se muestra la salida para la entrada 24 13
, convertido a PNG:
Befunge-93, 2120 1967 bytes
¡Aquí hay algunos befunge de alta calidad, con manejo de excepciones para la depuración!
&&00p10pv
v <
>94+2*20p v
>00g| > v
@ >10g>0020gv-1:<
>:0`|
, v $<
+ >v>v>v>v>v>v>v>v>v>v>v>v>v>v>v>v>v>v>v>v>v>v>v>v>v>v>v
v_$1-:#^_$20g1-20p55^ >|>|>|>|>|>|>|>|>|>|>|>|>|>|>|>|>|>|>|>|>|>|>|>|>|>|>|>"!DAB"[email protected]
,:
>^".......#.....#####......." <
^".......##.....#####......" <
^".......###.....#####....." <
^".......####.....####....." <
^".......#####.....###....." <
^".......######.....##....." <
^".......#######.....#....." <
^".......########.........." <
^"####################....." <
^".####################...." <
^"..####################..." <
^"...####################.." <
^"....####################." <
^".....####################" <
^"#.....##############.####" <
^"##.....#############..###" <
^"###....#############...##" <
^"####...#############....#" <
^"#####..#############....." <
^".#####.#############....." <
^"..##################....." <
^"........#####............" <
^".........#####..........." <
^"..........#####.........." <
^"...........#####........." <
^"............#####........" <
^ p00-1g00<
(Obviamente, esto todavía es muy fácil. Solo quería obtener una respuesta aquí por ahora)
Entonces, esto se compone de diferentes partes.
&&00p10p
Este es solo el inicializador, toma los valores y los almacena
>94+2*20p
>00g| >
@
Esta sección restablece el recuento de filas, por lo que podemos imprimir otras imágenes (de ancho) una al lado de la otra. 94+2*
está calculando 26, el número de filas. Además, si la altura es cero, el programa terminará.
>10g
Esto obtiene el ancho de la pila para que sepamos cuántos imprimir.
0020gv-1:<
>:0`|
$
Esto agrega dos valores ficticios a la pila para saber cuándo hemos terminado una operación, así como en qué fila (n) estamos. Esto luego agrega n valores a la pila
>v>v>v>v>v>v>v>v>v>v>v>v>v>v>v>v>v>v>v>v>v>v>v>v>v>v>v
|>|>|>|>|>|>|>|>|>|>|>|>|>|>|>|>|>|>|>|>|>|>|>|>|>|>|>"!DAB"[email protected]
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
Esta es una sección de control que se dirigirá a la fila (26-n). Esta es la forma más fácil de averiguar cómo hacerlo.
".......#.....#####......."
".......##.....#####......"
".......###.....#####....."
".......####.....####....."
".......#####.....###....."
".......######.....##....."
".......#######.....#....."
".......########.........."
"####################....."
".####################...."
"..####################..."
"...####################.."
"....####################."
".....####################"
"#.....##############.####"
"##.....#############..###"
"###....#############...##"
"####...#############....#"
"#####..#############....."
".#####.#############....."
"..##################....."
"........#####............"
".........#####..........."
"..........#####.........."
"...........#####........."
"............#####........"
Esto, obviamente, se lee y mostrará cualquier fila que se lea en la pila al revés. Esto significa que cuando lo sacamos, se imprimirá correctamente.
v_
,:
>^
Esto se imprimirá hasta que la pila llegue a 0, que dejamos antes.
1-:#^_
Esto quita 1 del número de la línea específica para imprimir, luego verifica si es cero o no. Si no es cero, volvemos al cuarto bloque de código.
,
+
20g1-20p55^
Esto resta 1 de la fila (n), imprime una nueva línea y vuelve al bloque 3
p00-1g00
Una vez impresas todas las filas, esto resta una de la altura inicial y vuelve al bloque 2.
Todo el resto del código es control de flujo o gestión de pila. Escribiendo este mas de lo que pensé que sería, pero estoy satisfecho con cómo se ve. Es mucho más fácil de jugar y probablemente seguirá siendo un proyecto para otro día.
2120 -> 1967: recortó algunas líneas con muchos espacios desperdiciados
Nos puedes avalar nuestra tarea ejecutando un comentario y dejando una valoración te damos la bienvenida.