Escriba un programa o función que tome dos enteros positivos, un ancho y un alto, y dibuje un patrón de cuadrícula de pata de gallo ASCII con esas dimensiones usando esta cuadrícula de texto de 25 × 26 como celda base:
.......#.....#####.......
.......##.....#####......
.......###.....#####.....
.......####.....####.....
.......#####.....###.....
.......######.....##.....
.......#######.....#.....
.......########..........
####################.....
.####################....
..####################...
...####################..
....####################.
.....####################
#.....##############.####
##.....#############..###
###....#############...##
####...#############....#
#####..#############.....
.#####.#############.....
..##################.....
........#####............
.........#####...........
..........#####..........
...........#####.........
............#####........
Entonces, si la entrada fuera 2,1
la salida sería:
.......#.....#####..............#.....#####.......
.......##.....#####.............##.....#####......
.......###.....#####............###.....#####.....
.......####.....####............####.....####.....
.......#####.....###............#####.....###.....
.......######.....##............######.....##.....
.......#######.....#............#######.....#.....
.......########.................########..........
####################.....####################.....
.####################.....####################....
..####################.....####################...
...####################.....####################..
....####################.....####################.
.....####################.....####################
#.....##############.#####.....##############.####
##.....#############..#####.....#############..###
###....#############...#####....#############...##
####...#############....#####...#############....#
#####..#############.....#####..#############.....
.#####.#############......#####.#############.....
..##################.......##################.....
........#####....................#####............
.........#####....................#####...........
..........#####....................#####..........
...........#####....................#####.........
............#####....................#####........
Y si la entrada fuera 5,4
la salida sería:
.......#.....#####..............#.....#####..............#.....#####..............#.....#####..............#.....#####.......
.......##.....#####.............##.....#####.............##.....#####.............##.....#####.............##.....#####......
.......###.....#####............###.....#####............###.....#####............###.....#####............###.....#####.....
.......####.....####............####.....####............####.....####............####.....####............####.....####.....
.......#####.....###............#####.....###............#####.....###............#####.....###............#####.....###.....
.......######.....##............######.....##............######.....##............######.....##............######.....##.....
.......#######.....#............#######.....#............#######.....#............#######.....#............#######.....#.....
.......########.................########.................########.................########.................########..........
####################.....####################.....####################.....####################.....####################.....
.####################.....####################.....####################.....####################.....####################....
..####################.....####################.....####################.....####################.....####################...
...####################.....####################.....####################.....####################.....####################..
....####################.....####################.....####################.....####################.....####################.
.....####################.....####################.....####################.....####################.....####################
#.....##############.#####.....##############.#####.....##############.#####.....##############.#####.....##############.####
##.....#############..#####.....#############..#####.....#############..#####.....#############..#####.....#############..###
###....#############...#####....#############...#####....#############...#####....#############...#####....#############...##
####...#############....#####...#############....#####...#############....#####...#############....#####...#############....#
#####..#############.....#####..#############.....#####..#############.....#####..#############.....#####..#############.....
.#####.#############......#####.#############......#####.#############......#####.#############......#####.#############.....
..##################.......##################.......##################.......##################.......##################.....
........#####....................#####....................#####....................#####....................#####............
.........#####....................#####....................#####....................#####....................#####...........
..........#####....................#####....................#####....................#####....................#####..........
...........#####....................#####....................#####....................#####....................#####.........
............#####....................#####....................#####....................#####....................#####........
.......#.....#####..............#.....#####..............#.....#####..............#.....#####..............#.....#####.......
.......##.....#####.............##.....#####.............##.....#####.............##.....#####.............##.....#####......
.......###.....#####............###.....#####............###.....#####............###.....#####............###.....#####.....
.......####.....####............####.....####............####.....####............####.....####............####.....####.....
.......#####.....###............#####.....###............#####.....###............#####.....###............#####.....###.....
.......######.....##............######.....##............######.....##............######.....##............######.....##.....
.......#######.....#............#######.....#............#######.....#............#######.....#............#######.....#.....
.......########.................########.................########.................########.................########..........
####################.....####################.....####################.....####################.....####################.....
.####################.....####################.....####################.....####################.....####################....
..####################.....####################.....####################.....####################.....####################...
...####################.....####################.....####################.....####################.....####################..
....####################.....####################.....####################.....####################.....####################.
.....####################.....####################.....####################.....####################.....####################
#.....##############.#####.....##############.#####.....##############.#####.....##############.#####.....##############.####
##.....#############..#####.....#############..#####.....#############..#####.....#############..#####.....#############..###
###....#############...#####....#############...#####....#############...#####....#############...#####....#############...##
####...#############....#####...#############....#####...#############....#####...#############....#####...#############....#
#####..#############.....#####..#############.....#####..#############.....#####..#############.....#####..#############.....
.#####.#############......#####.#############......#####.#############......#####.#############......#####.#############.....
..##################.......##################.......##################.......##################.......##################.....
........#####....................#####....................#####....................#####....................#####............
.........#####....................#####....................#####....................#####....................#####...........
..........#####....................#####....................#####....................#####....................#####..........
...........#####....................#####....................#####....................#####....................#####.........
............#####....................#####....................#####....................#####....................#####........
.......#.....#####..............#.....#####..............#.....#####..............#.....#####..............#.....#####.......
.......##.....#####.............##.....#####.............##.....#####.............##.....#####.............##.....#####......
.......###.....#####............###.....#####............###.....#####............###.....#####............###.....#####.....
.......####.....####............####.....####............####.....####............####.....####............####.....####.....
.......#####.....###............#####.....###............#####.....###............#####.....###............#####.....###.....
.......######.....##............######.....##............######.....##............######.....##............######.....##.....
.......#######.....#............#######.....#............#######.....#............#######.....#............#######.....#.....
.......########.................########.................########.................########.................########..........
####################.....####################.....####################.....####################.....####################.....
.####################.....####################.....####################.....####################.....####################....
..####################.....####################.....####################.....####################.....####################...
...####################.....####################.....####################.....####################.....####################..
....####################.....####################.....####################.....####################.....####################.
.....####################.....####################.....####################.....####################.....####################
#.....##############.#####.....##############.#####.....##############.#####.....##############.#####.....##############.####
##.....#############..#####.....#############..#####.....#############..#####.....#############..#####.....#############..###
###....#############...#####....#############...#####....#############...#####....#############...#####....#############...##
####...#############....#####...#############....#####...#############....#####...#############....#####...#############....#
#####..#############.....#####..#############.....#####..#############.....#####..#############.....#####..#############.....
.#####.#############......#####.#############......#####.#############......#####.#############......#####.#############.....
..##################.......##################.......##################.......##################.......##################.....
........#####....................#####....................#####....................#####....................#####............
.........#####....................#####....................#####....................#####....................#####...........
..........#####....................#####....................#####....................#####....................#####..........
...........#####....................#####....................#####....................#####....................#####.........
............#####....................#####....................#####....................#####....................#####........
.......#.....#####..............#.....#####..............#.....#####..............#.....#####..............#.....#####.......
.......##.....#####.............##.....#####.............##.....#####.............##.....#####.............##.....#####......
.......###.....#####............###.....#####............###.....#####............###.....#####............###.....#####.....
.......####.....####............####.....####............####.....####............####.....####............####.....####.....
.......#####.....###............#####.....###............#####.....###............#####.....###............#####.....###.....
.......######.....##............######.....##............######.....##............######.....##............######.....##.....
.......#######.....#............#######.....#............#######.....#............#######.....#............#######.....#.....
.......########.................########.................########.................########.................########..........
####################.....####################.....####################.....####################.....####################.....
.####################.....####################.....####################.....####################.....####################....
..####################.....####################.....####################.....####################.....####################...
...####################.....####################.....####################.....####################.....####################..
....####################.....####################.....####################.....####################.....####################.
.....####################.....####################.....####################.....####################.....####################
#.....##############.#####.....##############.#####.....##############.#####.....##############.#####.....##############.####
##.....#############..#####.....#############..#####.....#############..#####.....#############..#####.....#############..###
###....#############...#####....#############...#####....#############...#####....#############...#####....#############...##
####...#############....#####...#############....#####...#############....#####...#############....#####...#############....#
#####..#############.....#####..#############.....#####..#############.....#####..#############.....#####..#############.....
.#####.#############......#####.#############......#####.#############......#####.#############......#####.#############.....
..##################.......##################.......##################.......##################.......##################.....
........#####....................#####....................#####....................#####....................#####............
.........#####....................#####....................#####....................#####....................#####...........
..........#####....................#####....................#####....................#####....................#####..........
...........#####....................#####....................#####....................#####....................#####.........
............#####....................#####....................#####....................#####....................#####........
- El argumento del ancho debe venir primero. Cualquier formato de entrada razonable (por ejemplo
w,h
,w h
,(w, h)
) está bien. - Imprima o devuelva el resultado con una nueva línea final opcional.
- Puede usar dos caracteres ASCII imprimibles distintos en lugar de
.
y#
. - Puede traducir la celda base vertical u horizontalmente, como si tuviera condiciones de contorno periódicas . Por lo tanto, la esquina superior izquierda de la salida no será necesariamente un rectángulo de 7 × 8
.
. (¡ Nueva regla! )
El código más corto en bytes gana.
Como beneficio adicional, genere una imagen donde cada uno .
sea un píxel de un color y cada uno #
sea un píxel de otro color.
code-golf
ascii-art
kolmogorov-complexity
Pasatiempos de Calvin
fuente
fuente
Respuestas:
Pyth,
61605549 bytesPruébelo en línea: demostración
edición 1: combina las dos declaraciones que generan la banda y el triángulo (ver más abajo)
editar 2: No vi que podemos usar ningún símbolo. 5 bytes guardados editar
editar 3: @ Calvin'sHobbies permitió traducir la imagen base. Como mi enfoque se basó en esta idea, esto ayudó bastante. -6 bytes
Y para el bono de Cookie :
Esto es solo 2 bytes más (51 bytes) y genera el archivo
o.png
. Para la entrada5\n4
genera la siguiente imagen:Explicación:
El patrón de pata de gallo parece realmente bastante irregular. Pero si llevamos las 7 columnas izquierdas a la derecha y las 5 filas superiores al botón, obtenemos un patrón mucho más agradable:
Primero produzco el bloque 13x13 superior izquierdo:
Hay 2 desigualdades simples que describen las dos
#
áreas. La banda se puede describir pory + 1 <= x <= y + 5
y el triángulo se puede describir porx <= y - 5
. He combinado estas dos condiciones: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:
Todo lo que queda ahora es repetir el patrón e imprimirlo
La diferencia con el código de bonificación de Cookie :
255
en lugar de1
mjk*Qd
usar*RQ
, ya que no quiero una cadena.w
guarda esta matriz 2D en un archivo (lo convierte a png implícitamente)fuente
CJam,
1067371 bytesImpresiones
1
y en0
lugar de.
y#
. Pruébelo en línea en el intérprete de CJam .Cómo funciona
Bono de galletas
imprime un BitMap portátil en lugar del arte ASCII.
A continuación se muestra la salida para la entrada
24 13
, convertida a PNG:fuente
Befunge-93 ,
21201967 bytesAquí hay algunos befunge de alta calidad, con manejo de excepciones para la depuración
(Obviamente, esto todavía es muy golfable. Solo quería obtener una respuesta aquí por ahora)
Entonces, esto se compone de diferentes partes.
Este es solo el inicializador, toma los valores y los almacena
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 finalizará.Esto obtiene el ancho en la pila, por lo que sabemos cuántos imprimir
Esto agrega dos valores ficticios a la pila para indicar cuándo hemos terminado una operación, así como en qué fila (n) estamos. Esto luego agrega n valores a la pila
Esta es una sección de control que irá a la fila (26-n). Esta es la forma más fácil en la que podría descubrir cómo hacerlo.
Esto, obviamente, se lee y desplegará cualquier fila que se lea en la pila hacia atrás. Esto significa que cuando lo sacamos, se imprimirá correctamente.
Esto se imprimirá hasta que la pila llegue a un 0, que dejamos anteriormente.
Esto elimina 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.
Esto resta 1 de la fila (n), imprime una nueva línea y vuelve al bloque 3
Una vez que se han impreso todas las filas, esto resta una de la altura inicial y vuelve al bloque 2.
Todo el resto del código es flujo de control o gestión de pila. Escribiendo esto más de lo que pensé que sería, pero estoy satisfecho con cómo se ve. Es mucho más fácil de jugar, y eso probablemente seguirá siendo un proyecto para otro día.
2120 -> 1967 : recorta algunas líneas con muchos espacios desperdiciados
fuente
Perl, 243
(Se agregó un byte para que el
-n
conmutador obtenga la entrada de stdin).Esto es bastante sencillo: todo lo que hace es convertir una matriz de 26 números hexadecimales a binario e imprimirlos la cantidad requerida de veces.
Ejemplo:
Entrada:
Salida:
fuente
Rev 1, C,
118115bytes9 bytes guardados debido a una nueva regla que permite la traducción de la celda. 3 bytes guardados mediante el uso de
w*=25
. El resto de la publicación permanece sin cambios.Rev 0, C, 127 bytes
Esto pasa por los personajes, imprimiéndolos uno por uno.
i%(25*w)||puts("")
inserta una nueva línea al final de cada línea.Mi forma de ver el diseño es similar a la de Jakube, pero traigo las 8 filas superiores a la parte inferior y las 5 columnas derechas a la izquierda para obtener la siguiente vista. En el programa, este paso se "invierte" por
+20
y+8
en las expresiones para x e y.Además de la "inversión de colores" puede parecer muy similar, pero hay una diferencia importante: las rayas diagonales coinciden. (tenga en cuenta que el diseño original no tiene simetría diagonal, ya que mide 25x26).
La expresión
((y>x^y>x+5^x>y+4)^y/13)+34
produce lo siguiente, donde los diversos operadores de comparación producen las franjas,^y/13
produce el "cambio de color" a la mitad y+34
toma el número resultante0,1
y lo eleva al rango ASCII34,35
.El termino
&y/13==x/13
evalúa como falso = 0 en los cuartos superior derecho e inferior izquierdo, produciendo la parte cuadrada del patrón como se muestra anteriormente. Tenga en cuenta que debido a que el programa descuenta, el origen x = y = 0 está en la parte inferior derecha. Esto es útil ya que el cuadrado de#
13 caracteres de ancho, mientras que el cuadrado de"
solo 12 caracteres de ancho.fuente
Befunge -93, 968 bytes
Sí, eso es correcto! ¡Una respuesta competitiva de Befunge!
Explicación mañana, cama ahora. Sin embargo, diré que hago cosas inteligentes moviendo un par de flechas de redireccionamiento y también uso bastante la propiedad de ajuste. Pruébelo en este intérprete en línea .
fuente