L'alfabeto con bandiera del Codice internazionale dei segnali viene utilizzato dalle navi per le comunicazioni, in particolare per i segnali statici.
La tua sfida è scrivere un programma o una funzione che prenderà una stringa da STDIN o come argomento e visualizzerà il testo corrispondente nell'alfabeto della bandiera ICS. Se la tua lingua non viene visualizzata sullo schermo, il salvataggio in un file è accettabile.
Il programma o la funzione deve supportare le lettere AZ in maiuscolo e minuscolo, più Space e Newline . Il comportamento con altri personaggi non è definito.
Il display deve essere sufficientemente grande da essere in grado di visualizzare almeno 8 flag in orizzontale e 6 flag in verticale. Il comportamento non è definito se il bordo destro viene raggiunto prima di ricevere una nuova riga o se il messaggio è troppo lungo per adattarsi al display verticalmente.
L'alfabeto bandiera è come mostrato di seguito (le lettere romane sono solo di riferimento, non sono richieste nell'output.)
Dimensioni
Non esiste uno standard universalmente concordato per le dimensioni di queste bandiere, quindi ai fini di questa sfida si applica quanto segue:
Le bandiere devono essere di 60x60 pixel, con uno spazio di 30 pixel tra loro sia in orizzontale che in verticale.
La coda di rondine tagliata su A e B deve avere una profondità di 15 pixel.
Tutte le altre linee devono essere orizzontali, verticali o a 45 gradi.
Le caratteristiche devono essere posizionate dividendo la bandiera in una griglia NxN immaginaria di lati 3,4,5 o 6 quadrati. Fare riferimento all'immagine sopra, ma per ulteriori chiarimenti:
A, E, H, K, L e U si basano su una griglia 2x2: la larghezza di ciascuna zona di colore deve essere di 30 pixel. Anche i punti del diamante in F devono essere a metà strada lungo ciascun lato della bandiera.
J e T sono basati su una griglia 3x3: ogni banda deve essere di 20 pixel.
P, N e S sono basati su una griglia 4x4. Anche le linee diagonali di Y devono dividere i bordi della bandiera in 4.
C, D, R e X devono basarsi su una griglia 5x5. Le bande e i bracci delle croci devono avere una larghezza di 12 pixel.
G, W, M, V sono basati su una griglia 6x6. Le bande di G e i bordi di W devono avere una larghezza di 10 pixel. I bracci delle croci su M e V devono coprire il primo e l'ultimo 10 pixel di ciascun bordo della bandiera, lasciando zone triangolari che misurano 40 pixel lungo il bordo lungo.
Il cerchio di I sarà al centro della bandiera e avrà un diametro di 30 pixel.
È consentito un errore di +/- 1 pixel dal testo sopra. Se la tua lingua supporta solo grafica scalabile, puoi interpretare "pixel" come "unità".
Colori
I colori devono essere rosso, bianco, blu, giallo e nero come definito dalla tua lingua o dalla sua documentazione. Se la tua lingua non definisce i colori, puoi utilizzare quanto segue: Rosso FF0000, Bianco FFFFFF, Blu 0000FF, Giallo FFFF00, Nero 0000000.
Lo sfondo deve essere grigio (i canali r, g e b sono uguali, tra il 25% e il 75% di intensità.)
Punteggio / scappatoie
Questo è codegolf. Vince il codice più breve in byte.
Le scappatoie standard non sono ammesse.
Non è possibile utilizzare funzioni incorporate o di libreria per la visualizzazione di flag. L'output deve essere non testuale (e in particolare, i caratteri unicode non devono essere usati per costruire la forma della bandiera.)
Esempio
JFK got
my VHS
PC
and XLR
web quiz
dovrebbe produrre quanto segue