Alfabet flagi Międzynarodowego Kodeksu Sygnałów jest wykorzystywany przez statki do komunikacji, szczególnie w przypadku sygnałów statycznych.
Wyzwaniem jest napisanie programu lub funkcji, która pobierze ciąg znaków ze STDIN lub jako argument i wyświetli odpowiedni tekst w alfabecie flagi ICS. Jeśli Twój język nie wyświetla się na ekranie, zapisywanie do pliku jest dopuszczalne.
Twój program lub funkcja obsługuje litery AZ pisane wielkimi i małymi literami oraz spację i znak nowej linii . Zachowanie z innymi postaciami jest niezdefiniowane.
Wyświetlacz musi być wystarczająco duży, aby wyświetlać co najmniej 8 flag w poziomie i 6 flag w pionie. Zachowanie jest niezdefiniowane, jeśli prawy brzeg zostanie osiągnięty przed otrzymaniem nowej linii lub jeśli wiadomość jest zbyt długa, aby zmieścić wyświetlacz pionowo.
Alfabet flagi jest pokazany poniżej (litery rzymskie służą wyłącznie jako odniesienie, nie są wymagane na wyjściu).
Wymiary
Nie ma uniwersalnie uzgodnionej normy dotyczącej wymiarów tych flag, dlatego do celów tego wyzwania obowiązują następujące zasady:
Flagi powinny mieć wymiary 60 x 60 pikseli, z odstępem 30 pikseli między nimi zarówno w poziomie, jak i w pionie.
Głębokie cięcie na A i B powinno mieć 15 pikseli głębokości.
Wszystkie pozostałe linie muszą być poziome, pionowe lub pod kątem 45 stopni.
Obiekty należy zlokalizować, dzieląc flagę na wyobrażoną siatkę NxN o boku 3,4,5 lub 6 kwadratów. Zobacz powyższy obraz, ale dla dalszego wyjaśnienia:
A, E, H, K, L i U są oparte na siatce 2x2: szerokość każdej strefy kolorów wynosi 30 pikseli. Również punkty diamentu w F powinny znajdować się w połowie długości po każdej stronie flagi.
J i T oparte są na siatce 3x3: każde pasmo ma 20 pikseli.
P, N i S oparte są na siatce 4x4. Również ukośne linie Y podzielą krawędzie flagi na 4.
C, D, R i X będą oparte na siatce 5x5. Pasma i ramiona krzyży powinny mieć szerokość 12 pikseli.
G, W, M, V oparte są na siatce 6x6. Pasma G i granice W mają szerokość 10 pikseli. Ramiona krzyżyków na M i V powinny obejmować pierwsze i ostatnie 10 pikseli każdej krawędzi flagi, pozostawiając strefy trójkąta o długości 40 pikseli wzdłuż długiej krawędzi.
Okrąg I powinien znajdować się na środku flagi i mieć średnicę 30 pikseli.
Dozwolony jest błąd +/- 1 piksela w powyższym tekście. Jeśli Twój język obsługuje tylko skalowalną grafikę, możesz interpretować „piksele” jako „jednostki”.
Zabarwienie
Kolory powinny być czerwony, biały, niebieski, żółty i czarny, zgodnie z językiem lub dokumentacją. Jeśli twój język nie definiuje kolorów, możesz użyć następujących elementów: Czerwony FF0000, Biały FFFFFF, Niebieski 0000FF, Żółty FFFF00, Czarny 0000000.
Tło powinno być szare (kanały r, gib są równe, intensywność między 25% a 75%).
Punktacja / Luki
To jest codegolf. Najkrótszy kod w bajtach wygrywa.
Standardowe luki są niedozwolone.
Nie można używać żadnych wbudowanych funkcji bibliotecznych do wyświetlania flag. Dane wyjściowe powinny być nietekstowe (w szczególności do ułożenia flagi nie należy używać znaków Unicode).
Przykład
JFK got
my VHS
PC
and XLR
web quiz
powinien produkować następujące