È stato dimostrato che le seguenti 13 piastrelle quadrate Wang piastrellano sempre l'aereo aperiodicamente . Ciò significa che quando i quadrati sono disposti in una griglia con tutti i lati vicini dello stesso colore, una traslazione del motivo non corrisponderà mai a se stessa.
Rappresenteremo ogni tessera testualmente da una griglia 3 × 3 riempita con spazi al centro e agli angoli, e i numeri da 1 a 5 invece dei colori rosso, verde, blu, giallo, grigio, ai bordi:
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
Obbiettivo
Il tuo compito è scrivere un programma che includa larghezza e altezza e produca una griglia di piastrelle Wang valida con quelle dimensioni. Una piastrellatura valida è quella in cui tutti i bordi delle piastrelle adiacenti hanno lo stesso colore (o numero). Vince il programma più piccolo in byte.
Il tuo input dovrebbe provenire da argomenti stdin o della riga di comando e l'output dovrebbe andare a stdout. L'esatto formato di input può essere qualcosa di ragionevolmente ovvio, come >>> wangtiler 3 2
. La larghezza e l'altezza sono sempre numeri interi positivi.
Esempio (larghezza = 3, altezza = 2)
Si noti che quando disponiamo le tessere testuali i bordi adiacenti formano coppie di cifre ridondanti necessarie:
1 2 1
2 11 22 1
2 3 2
2 3 2
4 55 55 4
1 2 2
(Questo NON è il formato di output corretto.)
Possiamo comprimerli orizzontalmente e verticalmente per ottenere:
1 2 1
2 1 2 1
2 3 2
4 5 5 4
1 2 2
Questo formato compresso è il formato di output corretto che è necessario utilizzare. Le righe dispari devono includere il loro spazio finale.
Bonus grafico
Invece di avere un output testuale, il tuo programma potrebbe produrre un'immagine della griglia piastrellata. Le tessere grafiche devono essere composte da quattro triangoli 45-45-90 disposti in un quadrato e utilizzare cinque colori facilmente distinguibili come le tessere sopra. I bordi neri non sono richiesti. Le tessere grafiche devono avere una dimensione di almeno 32 × 32 pixel. Nessuna "compressione" è applicata a loro.
Immagine bonus di esempio: (stessa griglia dell'esempio sopra)
Il bonus vale meno 150 byte.
Gli appunti
- Devi usare questo set di 13 tessere.
- Le piastrelle non possono essere ruotate.
- Le piastrelle possono apparire un numero qualsiasi di volte (incluso nessuno).
- Si può presumere che sia possibile una piastrellatura valida con qualsiasi dimensione.