เขียนฟังก์ชั่นหรือโปรแกรมที่เข้ารหัสสตริงลงในรหัส 39บาร์โค้ดรูปแบบที่อักขระแต่ละตัวถูกเข้ารหัสเป็นห้าแท่งคั่นด้วยช่องว่างสี่ช่อง ทั้งสองแท่งและหนึ่งในช่องว่างมีความกว้างและอื่น ๆ ที่แคบ (10 * 4 รหัส) หรือสามของช่องว่างที่มีความกว้างและไม่มีแถบใด (4 รหัส) สิ่งนี้จะให้รหัสที่แตกต่างกัน 44 รหัสซึ่งเป็นรหัสที่สงวนไว้ซึ่งใช้เพื่อแสดงถึงจุดเริ่มต้นและจุดสิ้นสุดของสตริงที่เข้ารหัส
ความท้าทาย
อินพุตเป็นสตริงที่มีอักขระจากชุดเท่านั้น
1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ-. +/$%
เอาต์พุตคือสตริงที่เข้ารหัสเป็นสตริงบาร์โค้ด ช่องว่างแคบและช่องว่างระหว่างอักขระเป็นช่องว่างเดียวและช่องว่างกว้างคือช่องว่างสามช่อง แถบแคบคือลำดับ UTF-8 สำหรับอักขระ Unicode "Full block", █, 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
█ █ ███ ███ █หลังจากการเข้ารหัสตัวอักษรทั้งหมดสตริงคั่นที่ปลายทั้งสองด้วย intercharacter gap ซึ่งเป็นช่องว่างเดียวแทรกระหว่างตัวอักษรทุกตัว โซลูชันของคุณอาจส่งออกช่องว่างต่อท้ายและขึ้นบรรทัดใหม่ (ตามลำดับ)
ตัวอย่าง
"" → "█ █ ███ ███ █ █ █ ███ ███ █"
"A" → "█ █ ███ ███ █ ███ █ █ █ ███ █ █ ███ ███ █"
"C++" → "█ █ ███ ███ █ ███ ███ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ ███ ███ █"
"GOLF" → "█ █ ███ ███ █ █ █ █ ███ ███ ███ █ ███ █ █ █ ███ █ █ ███ █ ███ ███ █ █ █ █ ███ ███ █"
อนุญาตรูปแบบอินพุต / เอาต์พุตมาตรฐานและไม่อนุญาตช่องโหว่มาตรฐาน นี่คือโค้ดกอล์ฟดังนั้นโค้ดที่สั้นที่สุดที่วัดเป็นไบต์จะชนะ!
#ตัวละครเนื่องจากตัวอย่าง"#"ไม่ใช่เหตุผลเดียวที่สามารถใช้ในภาษาได้