Écrivez une fonction ou un programme qui code une chaîne dans un code- barres au format Code 39 , où chaque caractère est codé en cinq barres séparées par quatre espaces. Soit deux des barres et l'un des espaces sont larges et les autres sont étroits (codes 10 * 4), soit trois des espaces sont larges et aucune des barres n'est (4 codes). Cela donne 44 codes différents, dont l'un est un code réservé qui est utilisé pour désigner le début et la fin de la chaîne codée.
Le défi
L'entrée est une chaîne contenant uniquement des caractères de l'ensemble
1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ-. +/$%
La sortie est la chaîne codée sous forme de chaîne de code-barres. L'espace étroit et les espaces intercaractères sont un espace unique et un espace large est de trois espaces. La barre étroite est la séquence d'octets UTF-8 pour le caractère Unicode "Bloc complet", █, c'est 0xE2 0x96 0x88-à- dire que la barre large représente trois séquences / caractères de ce type ( ███). La liste complète des codes est la suivante:
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
Les barres et les espaces sont entrelacés, en commençant par une barre, donc par exemple Q est
bar 0 0 0 1 1
code █ █ █ ███ ███
space 0 0 0 1
Après avoir codé tous les caractères, la chaîne est délimitée aux deux extrémités avec █ █ ███ ███ █. L'espace intercaractère, un espace unique, est inséré entre chaque lettre. Votre solution peut générer des espaces de fin et une nouvelle ligne de fin (dans cet ordre).
Exemples
"" → "█ █ ███ ███ █ █ █ ███ ███ █"
"A" → "█ █ ███ ███ █ ███ █ █ █ ███ █ █ ███ ███ █"
"C++" → "█ █ ███ ███ █ ███ ███ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ ███ ███ █"
"GOLF" → "█ █ ███ ███ █ █ █ █ ███ ███ ███ █ ███ █ █ █ ███ █ █ ███ █ ███ ███ █ █ █ █ ███ ███ █"
Les formats d'entrée / sortie standard sont autorisés et les failles standard sont interdites. C'est le code-golf , donc le code le plus court mesuré en octets gagne!
#personnage, car, par exemple, ce "#"n'est pas la seule raison pour laquelle il pourrait être utilisé dans une langue.