Compito:
Considera il problema: "data una scacchiera con un quadrato mancante, tagliala in 21 L-triomino". Esiste una dimostrazione costruttiva ben nota che ciò può essere fatto per qualsiasi dimensione di scacchiera quadrata con una potenza di due. Funziona dividendo la scacchiera in una scacchiera più piccola con il buco al suo interno e un grosso triomino e poi osservando che quel triomino può essere tagliato in quattro triomino ricorsivamente.
In questo compito, è necessario tagliare una scacchiera 8x8 in triomino a forma di L e poi colorarli con quattro colori in modo tale che due triomini adiacenti non abbiano lo stesso colore.
Specifica:
Il tuo input è la posizione del foro, dato come una coppia di numeri interi. Puoi scegliere quale è l'indice di colonna e quale è l'indice di riga. Puoi scegliere se ognuno inizia da 0 o da 1 e lontano da quale angolo aumentano. È possibile che sia necessario A..H come prima coordinata anziché 0..7 o 1..8. Puoi anche accettare entrambe le coordinate impacchettate in un singolo numero intero 0..63 o 1..64 in ordine lessicografico (riga maggiore o colonna maggiore, da sinistra a destra o da destra a sinistra, in alto o in basso o in alto). È possibile scrivere un programma completo o una funzione.
È possibile produrre la piastrellatura come ASCII, come ASCII colorato o come primitive grafiche. Se si sceglie l'output ASCII, è possibile scegliere quattro caratteri ASCII stampabili per rappresentare i quattro colori. Se si sceglie ASCII colorato, è possibile scegliere quattro caratteri ASCII stampabili o solo un carattere diverso dallo spazio. Il buco deve essere rappresentato dal carattere spazio. Se uno dei tuoi personaggi è il personaggio spaziale, nessun triomino adiacente al buco o al bordo della scacchiera può essere di questo colore.
Se si sceglie ASCII colorato o output grafico, è possibile scegliere quattro colori tra # 000, # 00F, # 0F0, # 0FF, # F00, # F0F, # FF0, #FFF o gli equivalenti più vicini disponibili nel proprio ambiente. Se scegli l'output grafico, le tue primitive grafiche devono essere riempite di quadrati di almeno 32x32 pixel e separate da non più di due pixel di altro colore. Se quanto sopra supera la risoluzione dello schermo del tuo ambiente, il requisito di dimensione minima viene ridotto alla dimensione quadrata più grande che si adatta ancora allo schermo.
Puoi scegliere qualsiasi piastrellatura valida della scacchiera data. È possibile scegliere qualsiasi colore a quattro colori della piastrellatura scelta. La scelta di quattro colori deve essere la stessa per tutti gli output, ma non è necessario utilizzare tutti i colori in ogni output.
Esempi:
Possibile output per input = [0, 0] (angolo in alto a sinistra)
#??##??
##.?#..?
?..#??.#
??##.?##
##?..#??
#.??##.?
?..#?..#
??##??##
Un altro possibile output dello stesso programma (input = [0, 7]):
??#??#?
?##?##??
..xx..xx
.?x#.?x#
??##??##
..xx..xx
.?x#.?x#
??##??##
Un programma diverso può anche produrre, per l'immissione di "D1" (notare l'orientamento della scacchiera non standard ma consentito),
AABBCCAA
ACBACBAC
CCAABBCC
ABBAADD
AABDABDC
BBDDBBCC
BABBACAA
AABAACCA