Напишіть функцію або програму, що кодує рядок у штрих-код формату Code 39 , де кожен символ кодується у вигляді п'яти барів, розділених на чотири прогалини. Або два бруски, і одна із зазорів широкі, а інші вузькі (10 * 4 коди), або три зазори широкі, і жодна із смуг не є (4 коду). Це дає 44 різні коди, з яких один є зарезервованим кодом, який використовується для позначення початку та кінця кодованого рядка.
Змагання
Вхід - це рядок, що містить лише символи з набору
1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ-. +/$%
Вихід - це рядок, кодований у вигляді рядка штрих-коду. Вузький зазор і міжчастотні проміжки - це єдиний простір, а широкий зазор - три простори. Вузька смужка - послідовність байтів UTF-8 для символу Unicode "Повний блок", █, тобто 0xE2 0x96 0x88широка смуга - це три такі послідовності / символи байтів ( ███). Повний список кодів:
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
Смуги і пробіли перемежовуються, починаючи з бруска, так, наприклад, Q є
bar 0 0 0 1 1
code █ █ █ ███ ███
space 0 0 0 1
Після кодування всіх символів рядок розмежовується на обох кінцях █ █ ███ ███ █. Між кожною буквою вставляється міжрядковий проміжок, єдиний пробіл. Ваше рішення може виводити проміжки проміжку та контурну лінію (у такому порядку).
Приклади
"" → "█ █ ███ ███ █ █ █ ███ ███ █"
"A" → "█ █ ███ ███ █ ███ █ █ █ ███ █ █ ███ ███ █"
"C++" → "█ █ ███ ███ █ ███ ███ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ ███ ███ █"
"GOLF" → "█ █ ███ ███ █ █ █ █ ███ ███ ███ █ ███ █ █ █ ███ █ █ ███ █ ███ ███ █ █ █ █ ███ ███ █"
Стандартні формати введення / виводу дозволені, а стандартні лазівки заборонені. Це код-гольф , тому найкоротший код, виміряний в байтах, виграє!
#символів, оскільки, наприклад, "#"це не єдина причина, по якій він може бути використаний у мові.