Escriba una función o programa que codifique una cadena en un código de barras de formato Código 39 , donde cada carácter se codifica como cinco barras separadas por cuatro espacios. O dos de las barras y uno de los espacios son anchos y otros son estrechos (códigos 10 * 4), o tres de los espacios son anchos y ninguna de las barras son (4 códigos). Esto proporciona 44 códigos diferentes, de los cuales uno es un código reservado que se utiliza para denotar el inicio y el final de la cadena codificada.
El reto
La entrada es una cadena que contiene solo caracteres del conjunto
1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ-. +/$%
La salida es la cadena codificada como una cadena de código de barras. La brecha estrecha y las brechas entre caracteres son un espacio único y una brecha ancha es tres espacios. La barra estrecha es la secuencia de bytes UTF-8 para el carácter Unicode "Bloque completo", █, es decir, 0xE2 0x96 0x88y la barra ancha tiene tres secuencias / caracteres de bytes ( ███). La lista completa de códigos es:
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
Las barras y los espacios están intercalados, comenzando en una barra, por ejemplo, Q es
bar 0 0 0 1 1
code █ █ █ ███ ███
space 0 0 0 1
Después de codificar todos los caracteres, la cadena se delimita en ambos extremos con █ █ ███ ███ █. El espacio entre caracteres, un solo espacio, se inserta entre cada letra. Su solución puede generar espacios finales y una nueva línea final (en ese orden).
Ejemplos
"" → "█ █ ███ ███ █ █ █ ███ ███ █"
"A" → "█ █ ███ ███ █ ███ █ █ █ ███ █ █ ███ ███ █"
"C++" → "█ █ ███ ███ █ ███ ███ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ ███ ███ █"
"GOLF" → "█ █ ███ ███ █ █ █ █ ███ ███ ███ █ ███ █ █ █ ███ █ █ ███ █ ███ ███ █ █ █ █ ███ ███ █"
Los formatos de entrada / salida estándar están permitidos y las lagunas estándar están prohibidas. Este es el código de golf , por lo que gana el código más corto medido en bytes.
#personaje, ya que, por ejemplo, "#"no es la única razón por la que podría usarse en un idioma.