Se ha demostrado que las siguientes 13 fichas cuadradas de Wang siempre enlosan el avión periódicamente . Esto significa que cuando los cuadrados se organizan en una cuadrícula con todos los lados vecinos del mismo color, una traducción del patrón nunca coincidirá consigo misma.
Representaremos cada mosaico textualmente por una cuadrícula de 3 × 3 llena de espacios en el centro y las esquinas, y los números del 1 al 5 en lugar de los colores rojo, verde, azul, amarillo, gris, en los bordes:
2 2 2 1 1 1 4 3 2 2 4 3 2
1 2 1 3 2 3 2 1 3 1 3 2 4 4 4 4 4 5 4 5 5 5 5 5 5 4
3 2 3 2 3 2 1 2 1 4 1 2 2
Gol
Su tarea es escribir un programa que tome un ancho y una altura y genere una cuadrícula de mosaico Wang válida con esas dimensiones. Un mosaico válido es aquel en el que todos los bordes de mosaico adyacentes tienen el mismo color (o número). El programa más pequeño en bytes gana.
Su entrada debe provenir de stdin o argumentos de línea de comando y la salida debe ir a stdout. El formato de entrada exacto puede ser algo razonablemente obvio, como >>> wangtiler 3 2
. El ancho y la altura son siempre enteros positivos.
Ejemplo (ancho = 3, altura = 2)
Observe que cuando diseñamos los mosaicos textuales, los bordes vecinos forman los pares de dígitos redundantes necesarios:
1 2 1
2 11 22 1
2 3 2
2 3 2
4 55 55 4
1 2 2
(Este NO es el formato de salida adecuado).
Podemos comprimir estos horizontal y verticalmente para obtener:
1 2 1
2 1 2 1
2 3 2
4 5 5 4
1 2 2
Este formato comprimido es el formato de salida adecuado que debe usar. Las líneas impares deben incluir su espacio final.
Bonus gráfico
En lugar de tener una salida textual, su programa puede generar una imagen de la cuadrícula en mosaico. Los mosaicos gráficos deben estar formados por cuatro triángulos 45-45-90 dispuestos en un cuadrado y usar cinco colores fácilmente distinguibles como los mosaicos de arriba. Los bordes negros no son obligatorios. Los mosaicos gráficos deben tener al menos 32 × 32 píxeles de tamaño. No se les aplica "compresión".
Imagen de bonificación de ejemplo: (misma cuadrícula que el ejemplo anterior)
El bono vale menos 150 bytes.
Notas
- Debes usar este conjunto de 13 fichas.
- Las baldosas no pueden rotarse.
- Los mosaicos pueden aparecer varias veces (sin incluir ninguno).
- Puede suponer que es posible un mosaico válido con cualquier dimensión.