Scrivi una funzione o un programma che codifica una stringa in un codice 39 barre in formato codice , in cui ogni carattere è codificato come cinque barre separate da quattro spazi. O due delle barre e uno degli spazi sono ampi e altri sono stretti (codici 10 * 4), oppure tre degli spazi sono ampi e nessuna delle barre è (4 codici). Ciò fornisce 44 codici diversi, da cui uno è un codice riservato che viene utilizzato per indicare l'inizio e la fine della stringa codificata.
La sfida
L'input è una stringa contenente solo caratteri dell'insieme
1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ-. +/$%
L'output è la stringa codificata come stringa di codice a barre. Il divario stretto e gli spazi intercalari sono un unico spazio e un ampio divario è di tre spazi. La barra stretta è la sequenza di byte UTF-8 per il carattere Unicode "Blocco completo", █, ovvero la 0xE2 0x96 0x88barra larga è tre di tali sequenze / caratteri di byte ( ███). L'elenco completo dei codici è:
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
Le barre e gli spazi sono interlacciati, iniziando da una barra, quindi ad esempio Q lo è
bar 0 0 0 1 1
code █ █ █ ███ ███
space 0 0 0 1
Dopo aver codificato tutti i caratteri, la stringa viene delimitata ad entrambe le estremità con █ █ ███ ███ █. Lo spazio intercharacter, un singolo spazio, viene inserito tra ogni lettera. La soluzione può generare spazi finali e una nuova riga finale (in questo ordine).
Esempi
"" → "█ █ ███ ███ █ █ █ ███ ███ █"
"A" → "█ █ ███ ███ █ ███ █ █ █ ███ █ █ ███ ███ █"
"C++" → "█ █ ███ ███ █ ███ ███ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ ███ ███ █"
"GOLF" → "█ █ ███ ███ █ █ █ █ ███ ███ ███ █ ███ █ █ █ ███ █ █ ███ █ ███ ███ █ █ █ █ ███ ███ █"
Sono consentiti formati di input / output standard e non sono consentite scappatoie standard. Questo è code-golf , quindi vince il codice più breve misurato in byte!
#personaggio, poiché, ad esempio, "#"non è l'unico motivo per cui potrebbe essere usato in una lingua.