ทุกร้านในปัจจุบันใช้บาร์โค้ดรหัสผลิตภัณฑ์สากล (UPC) เพื่อทำให้กระบวนการเช็คเอาต์ง่ายขึ้น หากชื่อไม่ได้มีความหมายอะไรกับคุณคุณจะจำได้อย่างแน่นอนว่าชื่อพวกเขาเป็นอย่างไร:
รูปแบบ
ระบบที่พบมากที่สุดคือ UPC-A ซึ่งใช้ตัวเลข 12 หลักในการแสดงผลิตภัณฑ์แต่ละชนิด แต่ละหลักจะถูกเข้ารหัสเป็นชุดของแถบสีดำและสีขาวเพื่อให้เครื่องสามารถอ่านรหัสความยาวเจ็ดบิต มีรูปแบบมูลค่า 11 บิตทั้งหมดที่ระบุจุดเริ่มต้นกลางและจุดสิ้นสุดของบาร์โค้ด มีความยาวรวมบาร์โค้ด 12 × 7 + 11 = 95 บิต (จากนี้ไปเมื่อใช้ไบนารีเพื่ออ้างถึงสีของแต่ละบิต0
จะเป็นสีขาวและ1
ดำ)
101
จุดเริ่มต้นและจุดสิ้นสุดทั้งมีรูปแบบของ ตัวเลขจะถูกแบ่งออกเป็น 2 กลุ่มจาก 6 กลุ่มและเข้ารหัสตามที่แสดงด้านล่างโดยมีรูปแบบ01010
ระหว่างกลุ่มซ้ายและขวา ตารางนี้แสดงรายการรูปแบบสำหรับแต่ละหมายเลข โปรดทราบว่ารูปแบบจะแตกต่างกันไปขึ้นอยู่กับว่าตัวเลขอยู่ทางด้านขวาหรือด้านซ้าย (สิ่งนี้อนุญาตให้สแกนบาร์โค้ดคว่ำลง) อย่างไรก็ตามรูปแบบทางด้านขวานั้นตรงกันข้าม (สลับสีดำเป็นสีขาวและกลับกัน) ของด้านซ้าย
หากคุณไม่เห็นภาพด้านบนนี่เป็นข้อมูลเทียบเท่าเลขฐานสองของแต่ละหมายเลข
# Left Right
0 0001101 1110010
1 0011001 1100110
2 0010011 1101100
3 0111101 1000010
4 0100011 1011100
5 0110001 1001110
6 0101111 1010000
7 0111011 1000100
8 0110111 1001000
9 0001011 1110100
ตัวอย่าง
สมมติว่าคุณมี 022000 125033
UPC (นั่นไม่ใช่ตัวเลขสุ่มทิ้งความคิดเห็นถ้าคุณเข้าใจความสำคัญของมัน) คุณเริ่มต้นด้วยแผ่นสำเร็จรูปที่เหมือนกันในบาร์โค้ดทุกอัน:
101xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx01010xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx101
สำหรับตัวเลขคุณแทนที่แต่ละรายการด้วยการเข้ารหัสที่สอดคล้องกันสำหรับด้านข้าง (ซ้ายหรือขวา) ที่เปิดอยู่ หากคุณยังสับสนอยู่ให้ดูภาพด้านล่าง
นี่คือเอาต์พุตในไบนารี่ที่มี|
ท่อแยกชิ้นส่วน
101|0001101|0010011|0010011|0001101|0001101|0001101|01010|1100110|1101100|1001110|1110010|1000010|1000010|101
ท้าทาย
เขียนโปรแกรมที่ส่งบาร์โค้ด UPC-A สำหรับอินพุตของผู้ใช้ ขนาดของภาพควรเป็น 95 × 30 พิกเซลโดยแต่ละบิตมีความกว้างหนึ่งพิกเซลและสูง 30 พิกเซล มีแถบสีดำrgb(0, 0, 0)
และแถบสีขาวมีความโปร่งใสหรือrgb(255, 255, 255)
สม่ำเสมอ
หมายเหตุ
- รับอินพุตจาก stdin หรือบรรทัดคำสั่งหรือเขียนฟังก์ชันที่รับสตริงหรือจำนวนเต็ม (โปรดทราบว่าอินพุตสามารถมีเลขศูนย์นำหน้าได้และภาษาส่วนใหญ่จะลบออกหรือแปลงตัวเลขเป็นฐานแปด)
- แสดงผลภาพด้วยวิธีใดวิธีหนึ่งต่อไปนี้:
- บันทึกเป็นไฟล์ที่มีชื่อและรูปแบบ (PNG, PBM ฯลฯ ) ตามที่คุณต้องการ
- แสดงบนหน้าจอ
- ส่งออกข้อมูลไฟล์ไปยัง stdout
- คุณไม่สามารถใช้ไลบรารีหรือบิวด์อินที่สร้างบาร์โค้ด ( ฉันกำลังมองหาคุณ Mathematica ) แม้ว่าคุณอาจใช้ไลบรารีรูปภาพหรือกราฟิก
- หลักสุดท้ายของ UPC มักจะเป็นเลขเช็คแต่สำหรับวัตถุประสงค์เหล่านี้คุณไม่ต้องกังวลกับมัน
ตัวอย่าง
นี่คือตัวอย่างเพิ่มเติมเพื่อทดสอบรหัสของคุณด้วย เอาต์พุตไบนารียังได้รับเพื่อความสะดวก
การป้อนข้อมูล: 012345678910
เอาท์พุท:
10100011010011001001001101111010100011011000101010101000010001001001000111010011001101110010101
การป้อนข้อมูล: 777777222222
เอาท์พุท:
10101110110111011011101101110110111011011101101010110110011011001101100110110011011001101100101
เกณฑ์การให้คะแนน
นี่คือรหัสกอล์ฟดังนั้นการส่งที่สั้นที่สุด (เป็นไบต์ชนะ) Tiebreaker ไปที่โพสต์แรกสุด
["777777","222222"]