Está provado que os 13 azulejos quadrados Wang a seguir sempre ladrilham o avião de forma periódica . Isso significa que, quando os quadrados são organizados em uma grade com todos os lados vizinhos da mesma cor, uma tradução do padrão nunca coincide com ela mesma.
Representaremos cada bloco textualmente por uma grade 3 × 3 preenchida com espaços no centro e nos cantos, e os números de 1 a 5 em vez das cores vermelho, verde, azul, amarelo, cinza, nas bordas:
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
Objetivo
Sua tarefa é escrever um programa que inclua largura e altura e produza uma grade de blocos Wang válida com essas dimensões. Uma peça válida é aquela em que todas as arestas adjacentes têm a mesma cor (ou número). O menor programa em bytes vence.
Sua entrada deve vir de argumentos stdin ou de linha de comando e a saída deve ir para stdout. O formato exato de entrada pode ser algo razoavelmente óbvio, como >>> wangtiler 3 2
. A largura e a altura são sempre números inteiros positivos.
Exemplo (largura = 3, altura = 2)
Observe que, quando projetamos os blocos de texto, as bordas vizinhas formam os pares de dígitos redundantes necessários:
1 2 1
2 11 22 1
2 3 2
2 3 2
4 55 55 4
1 2 2
(Este NÃO é o formato de saída adequado.)
Podemos compactá-los horizontal e verticalmente para obter:
1 2 1
2 1 2 1
2 3 2
4 5 5 4
1 2 2
Esse formato compactado é o formato de saída adequado que você deve usar. As linhas numeradas ímpares devem incluir seu espaço à direita.
Bônus Gráfico
Em vez de ter qualquer saída de texto, seu programa pode gerar uma imagem da grade lado a lado. Os ladrilhos gráficos devem ser compostos de quatro triângulos 45-45-90 dispostos em um quadrado e usar cinco cores facilmente distinguíveis, como os ladrilhos acima. As bordas pretas não são necessárias. Os blocos gráficos devem ter pelo menos 32 × 32 pixels de tamanho. Nenhuma "compressão" é aplicada a eles.
Exemplo de imagem de bônus: (mesma grade do exemplo acima)
O bônus vale menos 150 bytes.
Notas
- Você deve usar este conjunto de 13 peças.
- Os ladrilhos não podem ser girados.
- As peças podem aparecer várias vezes (incluindo nenhuma).
- Você pode assumir que é possível um ladrilho válido com todas as dimensões.