कुछ पृष्ठभूमि
गिनती की छड़ें छोटी सलाखों (3-14 सेमी लंबी) होती हैं जो किसी भी संपूर्ण संख्या या अंश का प्रतिनिधित्व करने के लिए 2000 से अधिक वर्षों के लिए कई एशियाई संस्कृतियों के गणितज्ञों द्वारा उपयोग की जाती थीं। (हालांकि इस chqllenge में हम अहस्ताक्षरित पूर्णांक पर ध्यान केंद्रित करते हैं) एक लिखित संस्करण भी था, जिसे रॉड अंक कहा जाता है।
यहां देखिए यह कैसे काम करता है:
(यदि किसी भी बिंदु पर आप भ्रमित हो जाते हैं, तो प्रत्येक अंक के एएससीआई प्रतिनिधित्व की जांच करें और कुछ उदाहरण जो मैंने नीचे दिए हैं)
रॉड अंक 1-9 के लिए अंकों और 0. के लिए रिक्त के साथ एक सही स्थितिगत अंक प्रणाली है। अंक क्षैतिज और ऊर्ध्वाधर लाइनों से मिलकर होते हैं; जितनी अधिक रेखाएँ, उतना अधिक अंक। एक बार जब आप पिछले पांच हो जाते हैं, तो आप नीचे की रेखाओं के 5 में जोड़ने के लिए शीर्ष पर एक क्षैतिज रेखा डालते हैं। एक ऊर्ध्वाधर रेखा 1, दो ऊर्ध्वाधर रेखाएं 2, पांच ऊर्ध्वाधर रेखाएं 5 हैं, शीर्ष पर एक क्षैतिज रेखा के साथ एक ऊर्ध्वाधर रेखा 6 है, शीर्ष पर एक क्षैतिज रेखा के साथ चार ऊर्ध्वाधर रेखाएं 9 (उच्चतम अंक) हैं।
एक ऊर्ध्वाधर 3 अंक:
|||
|||
|||
|||
|||
हालांकि, रॉड अंक को पढ़ना आसान बनाने के लिए, उन्होंने प्रत्येक वैकल्पिक अंक के लिए अलग-अलग अंकन का उपयोग किया। दूसरी अंकन क्षैतिज और ऊर्ध्वाधर रेखाओं की भूमिका को बदल देता है। ताकि 3 को तीन क्षैतिज रेखाओं द्वारा और 8 को तीन क्षैतिज रेखाओं द्वारा शीर्ष पर खड़ी रेखा के साथ दर्शाया जाए।
एक क्षैतिज 8 अंक:
|
|
__|__
_____
_____
यह जानते हुए कि किस संकेतन का उपयोग करना आसान है, जैसा कि पहले कहा गया था, बारी-बारी से इस्तेमाल किया जाता है और सन त्ज़ु ने लिखा है कि "एक ऊर्ध्वाधर है, दस क्षैतिज है"। तो सबसे सही अंक ऊर्ध्वाधर है और हम वहां से वैकल्पिक रूप से।
चुनौती
इन छड़ों का उपयोग ऋणात्मक संख्याओं और भिन्नों को दर्शाने के लिए किया गया था (जैसा कि उन पर विकिपीडिया लेख में बताया गया है । इस चुनौती के उद्देश्य के लिए हम केवल सकारात्मक पूर्णांकों पर ध्यान केंद्रित करेंगे। उद्देश्य सरल है:
एक फ़ंक्शन या पूर्ण प्रोग्राम लिखें जो किसी भी तरह से पूर्णांक मान को इनपुट के रूप में लेता है और इस पूर्णांक के रॉड अंकन प्रतिनिधित्व को STDOUT में प्रिंट करता है (यदि आप बेहतर तरीके से काम करते हैं तो आप एक फ़ाइल भी लिख सकते हैं)। बाइट्स में सबसे छोटा कोड जीतता है।
हर अंक 5x5 ascii वर्णों द्वारा दर्शाया जाएगा और 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
_____ _____
|| || _____
|| || _____
|| || _____
|| || _____