O alfabeto de bandeira do Código Internacional de Sinais é usado pelos navios para comunicação, principalmente para sinais estáticos.
Seu desafio é escrever um programa ou função que retire uma string de STDIN ou como argumento e exiba o texto correspondente no alfabeto de bandeira do ICS. Se o seu idioma não for exibido na tela, a gravação em um arquivo é aceitável.
Seu programa ou função deve suportar as letras AZ em maiúsculas e minúsculas, além de Espaço e Nova Linha . O comportamento com outros caracteres é indefinido.
A tela deve ser grande o suficiente para exibir capaz de exibir pelo menos 8 sinalizadores horizontalmente e 6 sinalizadores verticalmente. O comportamento é indefinido se a borda direita for atingida antes do recebimento de uma nova linha ou se a mensagem for muito longa para caber na tela verticalmente.
O alfabeto da bandeira é como mostrado abaixo (as letras romanas são apenas para referência, não são necessárias na saída.)
Dimensões
Não há um padrão universalmente aceito para as dimensões dessas bandeiras, portanto, para os fins deste desafio, o seguinte será aplicado:
Os sinalizadores devem ter 60x60 pixels, com um intervalo de 30 pixels entre eles na horizontal e na vertical.
O corte da andorinha cortado em A e B deve ter 15 pixels de profundidade.
Todas as outras linhas devem ser horizontais, verticais ou a 45 graus.
As características devem ser localizadas dividindo a bandeira em uma grade NxN imaginária de lado 3,4,5 ou 6 quadrados. Consulte a imagem acima, mas para mais esclarecimentos:
A, E, H, K, L e U são baseadas em uma grade 2x2: a largura de cada zona de cor deve ser 30 pixels. Além disso, os pontos do diamante em F devem estar a meio caminho de cada lado da bandeira.
J e T são baseados em uma grade 3x3: cada banda deve ter 20 pixels.
P, N e S são baseados em uma grade 4x4. Além disso, as linhas diagonais de Y devem dividir as bordas da bandeira em 4.
C, D, R e X devem ser baseados em uma grade de 5x5. As faixas e os braços das cruzes devem ter 12 pixels de largura.
G, W, M, V são baseados em uma grade 6x6. Bandas de G e bordas de W devem ter 10 pixels de largura. Os braços das cruzes em M e V devem cobrir o primeiro e o último 10 pixels de cada borda da bandeira, deixando zonas de triângulo medindo 40 pixels ao longo da borda longa.
O círculo de I deve estar no centro da bandeira e ter 30 pixels de diâmetro.
É permitido um erro de +/- 1 pixel no texto acima. Se seu idioma suportar apenas gráficos escaláveis, você poderá interpretar "pixels" como "unidades".
Cores
As cores devem ser vermelhas, brancas, azuis, amarelas e pretas, conforme definido pelo seu idioma ou por sua documentação. Se o seu idioma não definir cores, você pode usar o seguinte: Vermelho FF0000, Branco FFFFFF, Azul 0000FF, Amarelo FFFF00, Preto 0000000.
O fundo deve ser cinza (canais r, ge eb iguais, entre 25% e 75% de intensidade.)
Pontuação / Lacunas
Isso é codegolf. O código mais curto em bytes vence.
As brechas padrão não são permitidas.
Nenhuma função interna ou de biblioteca para exibir sinalizadores pode ser usada. A saída deve ser sem texto (e, em particular, caracteres unicode não devem ser usados para criar a forma do sinalizador.)
Exemplo
JFK got
my VHS
PC
and XLR
web quiz
deve produzir o seguinte