พื้นหลังบางส่วน
แท่งนับเป็นแท่งขนาดเล็ก (ยาว 3-14 ซม.) ที่นักคณิตศาสตร์ใช้ในวัฒนธรรมเอเชียมานานกว่า 2000 ปีเพื่อใช้แทนจำนวนหรือเศษส่วนทั้งหมด (ใน chqllenge นี้เราจะมุ่งเน้นไปที่จำนวนเต็มไม่ได้ลงนาม) นอกจากนี้ยังมีรุ่นที่เป็นลายลักษณ์อักษรที่เรียกว่าเลขก้าน
นี่คือวิธีการทำงาน:
(ถ้า ณ จุดใดก็ตามที่คุณสับสนให้ไปที่ตัวแทน ASCII ของแต่ละหลักและตัวอย่างบางส่วนที่ฉันได้รวมไว้ที่ด้านล่าง)
เลข Rod เป็นระบบตัวเลขตำแหน่งจริงโดยมีตัวเลขสำหรับ 1-9 และว่างเปล่าสำหรับ 0 ตัวเลขประกอบด้วยเส้นแนวนอนและแนวตั้ง ยิ่งบรรทัดมีจำนวนมากเท่าใด เมื่อคุณได้รับห้าที่ผ่านมาคุณวางเส้นแนวนอนด้านบนเพื่อเพิ่ม 5 ถึงจำนวนบรรทัดด้านล่าง เส้นแนวตั้งหนึ่งเส้นคือ 1 เส้นแนวตั้งสองเส้น 2 เส้นแนวตั้งห้าเส้นคือ 5 เส้นแนวตั้งหนึ่งเส้นที่มีเส้นแนวนอนด้านบนคือ 6 เส้นแนวตั้งสี่เส้นที่มีเส้นแนวนอนด้านบนคือ 9 (ตัวเลขสูงสุด)
แนวตั้ง 3 หลัก:
|||
|||
|||
|||
|||
เพื่อให้การอ่านเลขแท่งง่ายขึ้นพวกเขาใช้เครื่องหมายที่แตกต่างกันสำหรับแต่ละหลักที่สลับกัน สัญกรณ์ที่สองสลับบทบาทของเส้นแนวนอนและแนวตั้ง ดังนั้น 3 จะถูกแสดงด้วยเส้นแนวนอนสามเส้นและ 8 โดยสามเส้นแนวนอนที่มีเส้นแนวตั้งอยู่ด้านบน
แนวนอน 8 หลัก:
|
|
__|__
_____
_____
การรู้สัญกรณ์ที่จะใช้นั้นง่ายเหมือนที่กล่าวไว้ก่อนหน้านี้ว่า tehy ใช้สลับกันและซุนวูเขียนว่า "อันหนึ่งเป็นแนวตั้งสิบอยู่ในแนวนอน" ดังนั้นหลักขวาสุดคือแนวตั้งและเราสลับจากตรงนี้บน
ความท้าทาย
แท่งเหล่านี้ถูกใช้เพื่อแสดงถึงจำนวนลบและเศษส่วน (ตามที่อธิบายไว้ในบทความวิกิพีเดียกับพวกเขาสำหรับจุดประสงค์ของการท้าทายนี้เราจะเน้นเฉพาะจำนวนเต็มบวกเท่านั้นวัตถุประสงค์นั้นง่าย:
เขียนฟังก์ชั่นหรือโปรแกรมเต็มรูปแบบที่ใช้ค่าจำนวนเต็มเป็นอินพุตในทางใดทางหนึ่งและพิมพ์การแสดงตัวเลขคันของจำนวนเต็มนี้ไปที่ STDOUT (คุณอาจเขียนไปยังไฟล์หากทำงานได้ดีขึ้น) รหัสที่สั้นที่สุดเป็นไบต์ชนะ
ทุกหลักจะถูกแทนด้วยตัวอักษร 5x5 ascii และคั่นด้วยสอง collumns จาก 5 ช่องว่าง การแสดงที่แน่นอนที่คุณจะใช้สำหรับแต่ละหลักมีดังนี้:
space between two digits (two colums):
0 digit, both vertical and horizontal (five columns):
1 digit, vertical:
|
|
|
|
|
2 digit, vertical:
| |
| |
| |
| |
| |
3 digit, vertical:
|||
|||
|||
|||
|||
4 digit, vertical:
|| ||
|| ||
|| ||
|| ||
|| ||
5 digit, vertical:
|||||
|||||
|||||
|||||
|||||
6 digit, vertical:
_____
|
|
|
|
7 digit, vertical:
_____
| |
| |
| |
| |
8 digit, vertical:
_____
|||
|||
|||
|||
9 digit, vertical:
_____
|| ||
|| ||
|| ||
|| ||
1 digit, horizontal:
_____
2 digit, horizontal:
_____
_____
3 digit, horizontal:
_____
_____
_____
4 digit, horizontal:
_____
_____
_____
_____
5 digit, horizontal:
_____
_____
_____
_____
_____
6 digit, horizontal:
|
|
|
|
__|__
7 digit, horizontal:
|
|
|
__|__
_____
8 digit, horizontal:
|
|
__|__
_____
_____
9 digit, horizontal:
|
__|__
_____
_____
_____
ตัวเลขจะถูกพิมพ์ติดกัน ไม่อนุญาตช่องว่างต่อท้ายที่เกินขอบเขตของตัวเลขหลักสุดท้าย ช่องว่างต่อท้ายเพื่อเติมเต็มช่องว่างของหลักสุดท้ายจำเป็น คุณควรจบผลลัพธ์ด้วยการขึ้นบรรทัดใหม่ ห้ามเว้นวรรคนำหน้าซึ่งไม่ได้อยู่ในกล่องขอบของหลักแรก
ตัวอย่างผลลัพธ์
บรรทัดที่ขึ้นต้นด้วย>
จะถูกตีความเป็นอินพุต
>12
| |
| |
| |
| |
_____ | |
>8037
| _____
| | |
__|__ _____ | |
_____ _____ | |
_____ _____ | |
>950
_____ _____
|| || _____
|| || _____
|| || _____
|| || _____