Escreva uma função ou programa que codifique uma sequência em um código de barras no formato Código 39 , em que cada caractere seja codificado como cinco barras separadas por quatro intervalos. Duas das barras e uma das lacunas são amplas e outras são estreitas (códigos 10 * 4), ou três das lacunas são amplas e nenhuma das barras é (4 códigos). Isso fornece 44 códigos diferentes, dos quais um é um código reservado usado para denotar o início e o fim da sequência codificada.
O desafio
A entrada é uma sequência que contém apenas caracteres do conjunto
1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ-. +/$%
A saída é a sequência codificada como uma sequência de código de barras. O espaço estreito e os espaços entre caracteres são um espaço único e um espaço amplo é de três espaços. A barra estreita é a sequência de bytes UTF-8 para o caractere Unicode "Bloco completo", █, ou seja, 0xE2 0x96 0x88
e a barra larga representa três dessas seqüências / caracteres de bytes ( ███
). A lista completa de códigos é:
Spaces
0100 0010 0001 1000 1011 1101 1110 0111
Bars
00000 + / $ %
10001 1 A K U
01001 2 B L V
11000 3 C M W
00101 4 D N X
10100 5 E O Y
01100 6 F P Z
00011 7 G Q -
10010 8 H R .
01010 9 I S space 1=wide
00110 0 J T start/end 0=narrow
As barras e os espaços são intercalados, começando em uma barra; portanto, por exemplo, Q é
bar 0 0 0 1 1
code █ █ █ ███ ███
space 0 0 0 1
Depois de codificar todos os caracteres, a cadeia é delimitada nas duas extremidades com █ █ ███ ███ █
. O espaço entre caracteres, um único espaço, é inserido entre cada letra. Sua solução pode gerar espaços à direita e uma nova linha à direita (nessa ordem).
Exemplos
"" → "█ █ ███ ███ █ █ █ ███ ███ █"
"A" → "█ █ ███ ███ █ ███ █ █ █ ███ █ █ ███ ███ █"
"C++" → "█ █ ███ ███ █ ███ ███ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ ███ ███ █"
"GOLF" → "█ █ ███ ███ █ █ █ █ ███ ███ ███ █ ███ █ █ █ ███ █ █ ███ █ ███ ███ █ █ █ █ ███ ███ █"
Formatos de entrada / saída padrão são permitidos e brechas padrão não são permitidas. Isso é código-golfe , então o código mais curto medido em bytes vence!
#
personagem, pois, por exemplo, "#"
não é o único motivo pelo qual ele pode ser usado em um idioma.