Tulis fungsi atau program yang menyandikan string ke kode format barcode, di mana setiap karakter dikodekan sebagai lima batang yang dipisahkan oleh empat celah. Dua bar dan satu celah lebar dan yang lainnya sempit (kode 10 * 4), atau tiga celah lebar dan tidak ada balok yang lebar (4 kode). Ini memberikan 44 kode berbeda, dari yang mana kode cadangan yang digunakan untuk menunjukkan awal dan akhir dari string yang disandikan.
Tantangan
Input adalah string yang hanya berisi karakter dari set
1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ-. +/$%
Outputnya adalah string yang disandikan sebagai string barcode. Kesenjangan sempit dan kesenjangan antar karakter adalah ruang tunggal dan kesenjangan lebar adalah tiga ruang. Bilah sempit adalah urutan byte UTF-8 untuk karakter Unicode "Blok penuh", █, yaitu 0xE2 0x96 0x88dan bilah lebar adalah tiga urutan / karakter byte tersebut ( ███). Daftar kode lengkap adalah:
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
Bilah dan spasi disisipkan, dimulai dari bilah, jadi misalnya Q adalah
bar 0 0 0 1 1
code █ █ █ ███ ███
space 0 0 0 1
Setelah meng-encode semua karakter, string dibatasi pada kedua ujungnya dengan █ █ ███ ███ █. Kesenjangan intercharacter, ruang tunggal, dimasukkan di antara setiap huruf. Solusi Anda dapat menampilkan spasi tambahan dan baris baru tambahan (dalam urutan itu).
Contohnya
"" → "█ █ ███ ███ █ █ █ ███ ███ █"
"A" → "█ █ ███ ███ █ ███ █ █ █ ███ █ █ ███ ███ █"
"C++" → "█ █ ███ ███ █ ███ ███ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ ███ ███ █"
"GOLF" → "█ █ ███ ███ █ █ █ █ ███ ███ ███ █ ███ █ █ █ ███ █ █ ███ █ ███ ███ █ █ █ █ ███ ███ █"
Format input / output standar diizinkan dan celah standar tidak diizinkan. Ini adalah kode-golf , jadi kode terpendek yang diukur dalam byte menang!
#karakter, karena, misalnya, "#"bukan satu-satunya alasan penggunaan karakter.