Il a été prouvé que les 13 tuiles Wang carrées suivantes tuiles toujours l'avion en apériodique . Cela signifie que lorsque les carrés sont disposés dans une grille avec tous les côtés voisins de la même couleur, une translation du motif ne correspondra jamais à elle-même.
Nous représenterons chaque tuile textuellement par une grille 3 × 3 remplie d'espaces au centre et dans les coins, et les nombres 1 à 5 au lieu des couleurs rouge, vert, bleu, jaune, gris, sur les bords:
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
Objectif
Votre tâche consiste à écrire un programme qui prend une largeur et une hauteur et génère une grille de tuiles Wang valide avec ces dimensions. Un pavage valide est celui dans lequel tous les bords de carreaux adjacents ont la même couleur (ou nombre). Le plus petit programme en octets gagne.
Votre entrée doit provenir d'arguments stdin ou de ligne de commande et la sortie doit aller à stdout. Le format d'entrée exact peut être quelque chose de raisonnablement évident, comme >>> wangtiler 3 2
. La largeur et la hauteur sont toujours des entiers positifs.
Exemple (largeur = 3, hauteur = 2)
Notez que lorsque nous mettons en page les tuiles textuelles, les bords voisins forment les paires redondantes nécessaires de chiffres:
1 2 1
2 11 22 1
2 3 2
2 3 2
4 55 55 4
1 2 2
(Ce n'est PAS le format de sortie approprié.)
Nous pouvons les compresser horizontalement et verticalement pour obtenir:
1 2 1
2 1 2 1
2 3 2
4 5 5 4
1 2 2
Ce format compressé est le format de sortie approprié que vous devez utiliser. Les lignes impaires doivent inclure leur espace de fin.
Bonus graphique
Au lieu d'avoir une sortie textuelle, votre programme peut sortir une image de la grille carrelée. Les carreaux graphiques doivent être constitués de quatre triangles 45-45-90 disposés en carré et utiliser cinq couleurs facilement reconnaissables comme les carreaux ci-dessus. Les bordures noires ne sont pas obligatoires. Les tuiles graphiques doivent avoir une taille d'au moins 32 × 32 pixels. Aucune "compression" ne leur est appliquée.
Exemple d'image bonus: (même grille que l'exemple ci-dessus)
Le bonus vaut moins 150 octets.
Remarques
- Vous devez utiliser cet ensemble de 13 tuiles.
- Les carreaux ne peuvent pas être tournés.
- Les vignettes peuvent apparaître un certain nombre de fois (y compris aucune).
- Vous pouvez supposer qu'un carrelage valide avec toutes les dimensions est possible.