L'alphabet du drapeau du Code international de signaux est utilisé par les navires pour la communication, en particulier pour les signaux statiques.
Votre défi consiste à écrire un programme ou une fonction qui prendra une chaîne de STDIN ou comme argument, et affichera le texte correspondant dans l'alphabet indicateur ICS. Si votre langue ne s'affiche pas à l'écran, l'enregistrement dans un fichier est acceptable.
Votre programme ou fonction doit prendre en charge les lettres AZ en majuscules et minuscules, plus Espace et Nouvelle ligne . Le comportement avec d'autres personnages n'est pas défini.
L'affichage doit être suffisamment grand pour pouvoir afficher au moins 8 drapeaux horizontalement et 6 drapeaux verticalement. Le comportement n'est pas défini si le bord droit est atteint avant la réception d'une nouvelle ligne ou si le message est trop long pour s'adapter verticalement à l'affichage.
L'alphabet du drapeau est comme indiqué ci-dessous (les lettres romaines sont fournies à titre indicatif uniquement, elles ne sont pas requises dans la sortie.)
Dimensions
Il n'y a pas de norme universellement acceptée pour les dimensions de ces drapeaux, donc aux fins de ce défi, les règles suivantes s'appliquent:
Les drapeaux doivent mesurer 60 x 60 pixels, avec un espace de 30 pixels entre eux horizontalement et verticalement.
La coupe du machaon sur A et B doit avoir une profondeur de 15 pixels.
Toutes les autres lignes doivent être horizontales, verticales ou à 45 degrés.
Les caractéristiques doivent être localisées en divisant le drapeau en une grille NxN imaginaire de côtés 3,4,5 ou 6 carrés. Reportez-vous à l'image ci-dessus, mais pour plus de précisions:
A, E, H, K, L et U sont basés sur une grille 2x2: la largeur de chaque zone de couleur doit être de 30 pixels. De plus, les points du losange en F doivent être à mi-chemin de chaque côté du drapeau.
J et T sont basés sur une grille 3x3: chaque bande doit être de 20 pixels.
P, N et S sont basés sur une grille 4x4. De plus, les lignes diagonales de Y doivent diviser les bords du drapeau en 4.
C, D, R et X doivent être basés sur une grille 5x5. Les bandes et les bras de croix doivent avoir une largeur de 12 pixels.
G, W, M, V sont basés sur une grille 6x6. Les bandes de G et les bordures de W doivent avoir une largeur de 10 pixels. Les bras de croix sur M et V doivent couvrir les 10 premiers et derniers pixels de chaque bord du drapeau, laissant des zones triangulaires mesurant 40 pixels le long du bord long.
Le cercle de I sera au centre du drapeau et aura un diamètre de 30 pixels.
Une erreur de +/- 1 pixel dans le texte ci-dessus est autorisée. Si votre langue ne prend en charge que les graphiques évolutifs, vous pouvez interpréter «pixels» comme signifiant «unités».
Couleurs
Les couleurs doivent être rouge, blanc, bleu, jaune et noir selon la définition de votre langue ou de sa documentation. Si votre langue ne définit pas de couleurs, vous pouvez utiliser les éléments suivants: Rouge FF0000, Blanc FFFFFF, Bleu 0000FF, Jaune FFFF00, Noir 0000000.
Le fond doit être gris (canaux r, g et b égaux, entre 25% et 75% d'intensité.)
Notation / échappatoires
C'est du codegolf. Le code le plus court en octets gagne.
Les failles standard ne sont pas autorisées.
Aucune fonction intégrée ou bibliothèque pour afficher les drapeaux ne peut être utilisée. La sortie doit être non textuelle (et en particulier, les caractères unicode ne doivent pas être utilisés pour créer la forme du drapeau.)
Exemple
JFK got
my VHS
PC
and XLR
web quiz
devrait produire ce qui suit