Алфавит флага Международного кода сигналов используется судами для связи, особенно для статических сигналов.
Ваша задача - написать программу или функцию, которая будет принимать строку из STDIN или в качестве аргумента и отображать соответствующий текст в алфавитном флаге ICS. Если ваш язык не отображается на экране, сохранение в файл приемлемо.
Ваша программа или функция должны поддерживать буквы AZ в верхнем и нижнем регистре, а также пробел и перевод строки . Поведение с другими персонажами не определено.
Дисплей должен быть достаточно большим, чтобы отображать, по меньшей мере, 8 флагов по горизонтали и 6 флагов по вертикали. Поведение не определено, если правый край достигнут до того, как получена новая строка, или если сообщение слишком длинное, чтобы поместиться на дисплее вертикально.
Алфавит флага показан ниже (латинские буквы приведены только для справки, они не требуются при выводе).
Габаритные размеры
Не существует универсально согласованного стандарта для размеров этих флагов, поэтому для целей этой задачи должно применяться следующее:
Флаги должны быть 60x60 пикселей, с промежутком в 30 пикселей между ними как по горизонтали, так и по вертикали.
Обрезка ласточкиного хвоста на А и В должна иметь глубину 15 пикселей.
Все остальные линии должны быть горизонтальными, вертикальными или под углом 45 градусов.
Элементы должны быть расположены путем деления флага на воображаемую сетку NxN со стороной 3,4,5 или 6 квадратов. Обратитесь к изображению выше, но для уточнения:
A, E, H, K, L и U основаны на сетке 2x2: ширина каждой цветовой зоны должна составлять 30 пикселей. Также точки алмаза в F должны быть на полпути вдоль каждой стороны флага.
J и T основаны на сетке 3x3: каждая полоса должна быть 20 пикселей.
P, N и S основаны на сетке 4x4. Также диагональные линии Y должны разделить края флага на 4.
C, D, R и X должны быть основаны на сетке 5x5. Ширина полос и крестов должна составлять 12 пикселей.
G, W, M, V основаны на сетке 6x6. Полосы G и границы W должны иметь ширину 10 пикселей. Крестики на M и V должны покрывать первые и последние 10 пикселей каждого края флага, оставляя треугольные зоны размером 40 пикселей по длинному краю.
Круг I должен быть в центре флага и иметь диаметр 30 пикселей.
Ошибка в +/- 1 пиксель из приведенного выше текста допускается. Если ваш язык поддерживает только масштабируемую графику, вы можете интерпретировать «пиксели» как «единицы».
Цвета
Цвета должны быть красным, белым, синим, желтым и черным в соответствии с вашим языком или документацией. Если ваш язык не определяет цвета, вы можете использовать следующее: красный FF0000, белый FFFFFF, синий 0000FF, желтый FFFF00, черный 0000000.
Фон должен быть серым (каналы r, g и b равны, интенсивность между 25% и 75%.)
Скоринг / лазейки
Это кодегольф. Самый короткий код в байтах побеждает.
Стандартные лазейки запрещены.
Нельзя использовать встроенные или библиотечные функции для отображения флагов. Вывод должен быть нетекстовым (и, в частности, символы юникода не должны использоваться для построения формы флага).
пример
JFK got
my VHS
PC
and XLR
web quiz
должен произвести следующее