บาร์โค้ด 4 สถานะ
บริการไปรษณีย์หลายแห่ง (Royal Mail UK, Canada Post, US Mail และอื่น ๆ ) ใช้บาร์โค้ด 4 สถานะเพื่อเข้ารหัสข้อมูลเกี่ยวกับจดหมายของพวกเขา แสดงผลใน ASCII อาจมีลักษณะดังนี้:
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
บาร์โค้ด 4 สถานะคือแถบหนึ่งแถว แต่ละแถบสามารถขยายขึ้นลงล่างหรือทั้งสองอย่าง ซึ่งหมายความว่าแต่ละแถบนั้นหมายถึงตัวเลข 4 หลัก:
| | บาร์: | | | | | | ตัวเลข: 0 1 2 3
ปัญหาเกี่ยวกับสัญลักษณ์นี้คือว่าบาร์โค้ดแต่ละอันมีบาร์โค้ดที่ถูกต้องและต่างกันกลับหัว: การเปลี่ยนความหมายอย่างมากหากการวางแนวไม่ถูกต้อง ดังนั้นโดยปกติแล้วลำดับการเริ่มและหยุดจะถูกนำไปใช้เพื่อสแกนเนอร์สามารถคำนวณได้ว่าควรจะอ่านวิธีใด
สำหรับจุดประสงค์ของการท้าทายนี้เราจะใช้ลำดับเริ่มต้น / หยุดที่ระบุโดย Australia Post: บาร์โค้ดแต่ละอันจะเริ่มต้นและสิ้นสุดด้วย1 0
ลำดับ
ความท้าทาย
งานของคุณคือการเขียนโปรแกรมหรือฟังก์ชั่นที่ได้รับเป็นจำนวนเต็มบวกN
, แปลงไปยัง ASCII บาร์โค้ด 4 รัฐที่แต่ละบาร์ (ยกเว้นลำดับเริ่มต้น / หยุด) หมายถึงหลักในฐาน-4 N
ตัวแทนของ
ตัวอย่าง:
ได้รับจำนวนเต็ม19623
ครั้งแรกที่เราจะแปลงเป็นของฐาน-4 10302213
แทน
จากนั้นเราจะแมปแต่ละหลักไปยังแถบที่เกี่ยวข้อง:
1 0 3 0 2 2 1 3 | | | | | | | | | | | | | | | |
สุดท้ายเราจะเพิ่มลำดับการเริ่ม / หยุด:
เริ่ม: สิ้นสุด: 1 0 1 0 | | | | | | | | | | | | | | | | | | | | | |
บาร์โค้ดที่ได้ควรเป็นผลลัพธ์ของโปรแกรม
กฎ:
- ข้อมูลที่ป้อนจะเป็นจำนวนเต็มบวกภายในช่วงขนาดมาตรฐานของภาษาของคุณ
- ผลลัพธ์:
- อาจเป็นรายการของบรรทัดหรือสตริงที่มีการขึ้นบรรทัดใหม่
- อาจมีการขึ้นบรรทัดใหม่หรือเว้นวรรคบรรทัดใหม่หรือตามหลังตราบใดที่รูปร่างยังคงไม่เปลี่ยนแปลง
- ควรแสดงบาร์โค้ดด้วยรูปแบบข้างต้น - ต้องใช้อักขระไพพ์ (
|
) และอักขระเว้นวรรค () เมื่อวาดแท่งและควรมีช่องว่าง 1 ช่องระหว่างแต่ละแถบตั้งตรง
- นี่คือโค้ดกอล์ฟดังนั้นโปรแกรมที่สั้นที่สุด (เป็นไบต์) ชนะ!
กรณีทดสอบ
4095:
| | | | | | | | | | | | | | | | | | | | | | | |
4096:
| | | | | | | | | | | | | |
7313145:
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |