Das Flaggenalphabet International Code of Signals wird von Schiffen für die Kommunikation verwendet, insbesondere für statische Signale.
Ihre Herausforderung besteht darin, ein Programm oder eine Funktion zu schreiben, die eine Zeichenfolge aus STDIN oder als Argument verwendet und den entsprechenden Text im ICS-Flaggenalphabet anzeigt. Wenn Ihre Sprache nicht auf dem Bildschirm angezeigt wird, ist das Speichern in einer Datei akzeptabel.
Ihr Programm oder Funktion wird Buchstaben unterstützen AZ in Groß- und Kleinschreibung sowie Raum und Newline . Verhalten mit anderen Zeichen ist undefiniert.
Die Anzeige muss groß genug sein, um mindestens 8 Flaggen horizontal und 6 Flaggen vertikal anzeigen zu können. Das Verhalten ist undefiniert, wenn die rechte Kante erreicht ist, bevor eine neue Zeile empfangen wird, oder wenn die Nachricht zu lang ist, um vertikal auf die Anzeige zu passen.
Das Flaggenalphabet ist wie unten gezeigt (lateinische Buchstaben dienen nur als Referenz, sie werden in der Ausgabe nicht benötigt.)
Maße
Es gibt keine allgemein anerkannte Norm für die Abmessungen dieser Flaggen. Für diese Herausforderung gilt daher Folgendes:
Die Flags müssen 60 x 60 Pixel groß sein und einen horizontalen und vertikalen Abstand von 30 Pixel haben.
Der Schwalbenschwanzschnitt in A und B muss 15 Pixel tief sein.
Alle anderen Linien müssen horizontal, vertikal oder in einem Winkel von 45 Grad verlaufen.
Die Merkmale sind zu lokalisieren, indem die Flagge in ein imaginäres NxN-Gitter mit Seiten von 3,4,5 oder 6 Quadraten unterteilt wird. Beziehen Sie sich auf das obige Bild, aber zur weiteren Verdeutlichung:
A, E, H, K, L und U basieren auf einem 2x2-Raster: Die Breite jeder Farbzone muss 30 Pixel betragen. Auch die Punkte des Diamanten in F müssen sich auf beiden Seiten der Flagge befinden.
J und T basieren auf einem 3x3-Raster: Jedes Band muss 20 Pixel haben.
P, N und S basieren auf einem 4x4-Raster. Auch die diagonalen Linien von Y teilen die Ränder der Flagge in 4.
C, D, R und X basieren auf einem 5x5-Raster. Bänder und Arme von Kreuzen müssen 12 Pixel breit sein.
G, W, M, V basieren auf einem 6x6-Raster. Bänder von G und Ränder von W müssen 10 Pixel breit sein. Kreuzarme auf M und V bedecken die ersten und letzten 10 Pixel jeder Kante der Flagge, wobei entlang der langen Kante Dreieckszonen mit einer Größe von 40 Pixel verbleiben.
Der Kreis von I soll sich in der Mitte der Flagge befinden und einen Durchmesser von 30 Pixel haben.
Ein Fehler von +/- 1 Pixel aus dem obigen Text ist zulässig. Wenn Ihre Sprache nur skalierbare Grafiken unterstützt, können Sie "Pixel" als "Einheiten" interpretieren.
Farben
Die Farben müssen rot, weiß, blau, gelb und schwarz sein, wie in Ihrer Sprache oder deren Dokumentation definiert. Wenn Ihre Sprache keine Farben definiert, können Sie Folgendes verwenden: Rot FF0000, Weiß FFFFFF, Blau 0000FF, Gelb FFFF00, Schwarz 0000000.
Der Hintergrund muss grau sein (Kanäle r, g und b mit einer Intensität zwischen 25% und 75%).
Wertung / Lücken
Das ist Codegolf. Kürzester Code in Bytes gewinnt.
Standardlücken sind nicht zulässig.
Es dürfen keine eingebauten oder Bibliotheksfunktionen zum Anzeigen von Flags verwendet werden. Die Ausgabe darf kein Text sein (und insbesondere dürfen Unicode-Zeichen nicht zum Aufbau der Flag-Form verwendet werden.)
Beispiel
JFK got
my VHS
PC
and XLR
web quiz
sollte folgendes erzeugen