यहाँ एक खुली किताब का काफी सरल ASCII चित्रण है:
|\
| \
| \
| \
| \__________
| || |
| || Lorem i |
\ || psum do |
\ || lor sit |
\ || amet, |
\ || consect |
\||_________|
ध्यान दें कि पाठ भाग केवल दाहिने पृष्ठ पर है और 7 अक्षर 5 लम्बे चौड़े हैं। यह भी ध्यान दें कि पुस्तक के ऊपरी किनारे में 5 बैकस्लैश और 10 अंडरस्कोर हैं। 10 पाठ चौड़ाई 3 से आता है और 5 10 का आधा है।
उसी स्केलिंग प्रारूप का उपयोग करके हम पुस्तक को आकार बदल सकते हैं, जिसमें टेक्स्ट क्षेत्र w अक्षर चौड़ा और h उच्च होता है, जहाँ w कोई भी विषम धनात्मक पूर्णांक होता है और h कोई धनात्मक पूर्णांक होता है।
कुछ w × h पुस्तकें: 1 × 1, 1 × 2, 3 × 2
|\
|\ | \
|\ | \____ | \______
| \____ | || | | || |
| || | | || L | \ || Lor |
\ || L | \ || o | \ || em |
\||___| \||___| \||_____|
शीर्ष पर अंडरस्कोर नंबर हमेशा w +3 और बैकस्लैश की संख्या हमेशा (है w +3) / 2।
लक्ष्य
प्रोगाम लिखें जो एक फ़ाइल नाम और w और h को कमांड लाइन आर्ग्यूमेंट्स के रूप में लेता है , और फाइल की सामग्री को प्रदर्शित करने के लिए उन टेक्स्ट आयामों के साथ एक किताब को आउटपुट करता है जो स्टडआउट करता है।
जब फ़ाइल में एक से अधिक पाठ होंगे तो एक पृष्ठ में N
कुंजी को अगले पृष्ठ को प्रिंट B
करना चाहिए और एक पृष्ठ पर वापस जाना चाहिए। कुछ भी नहीं होना चाहिए अगर B
पहले पृष्ठ N
से दबाया जाता है या अंतिम पृष्ठ से दबाया जाता है। जब Q
कुंजी को मारा जाता है तो कार्यक्रम को रोकना चाहिए ।
उदाहरण
मान लीजिए कि f.txt
इसमें Lorem ipsum dol?
उपयोगकर्ता है और कुंजी अनुक्रम दबाया गया है N N B N N Q
। कार्यक्रम कुछ इस तरह से चलना चाहिए:
>>> bookmaker f.txt 3 2
|\
| \
| \______
| || |
\ || Lor |
\ || em |
\||_____|
|\
| \
| \______
| || |
\ || ips |
\ || um |
\||_____|
|\
| \
| \______
| || |
\ || dol |
\ || ? |
\||_____|
|\
| \
| \______
| || |
\ || ips |
\ || um |
\||_____|
|\
| \
| \______
| || |
\ || dol |
\ || ? |
\||_____|
>>>
ध्यान दें कि हर पुस्तक के बाद एक नई रेखा है और कोई अनुगामी स्थान नहीं है। यह आवश्यक है।
टिप्पणियाँ
- आप मान सकते हैं कि फ़ाइल में केवल मुद्रण योग्य ASCII वर्ण (हेक्स 20 से 7E) हैं।
- शब्द की सीमाओं की परवाह किए बिना, प्रत्येक उपलब्ध स्थान पर एक वर्ण प्रिंट करें।
- डब्ल्यू और ज रहे हैं वैकल्पिक तर्क है कि डिफ़ॉल्ट करने के लिए 7 और 5 क्रमशः। आपका कार्यक्रम या तो दिया जाएगा या दोनों नहीं होगा। (आप मान सकते हैं कि इनपुट हमेशा अच्छी तरह बनता है।)
- रिक्त स्थान के साथ अंतिम पृष्ठ पर किसी भी खाली पाठ स्थान को भरें।
Q
केवल एक पृष्ठ होने पर भी छोड़ने की आवश्यकता होनी चाहिए।
जीतना
बोनस जीतने के बाद बाइट्स में सबसे छोटा कार्यक्रम जीत है।
बोनस
- प्रमुख रिक्त स्थान निकालें ताकि हर पंक्ति एक शब्द (या शब्द खंड) से शुरू हो। जैसे
| amet, |
पहले उदाहरण में बन जाएगा| amet, c |
। (-30 बाइट्स) - बाद में
N
या बाद में खींची गई पुस्तकों की स्क्रीन साफ़ करेंB
(औरT
यदि आप इसके बाद बोनस करते हैं) तो पुस्तक जगह में अपने बदलते पृष्ठों की तरह दिखती है। (-20 बाइट्स) T
बाएँ से दाएँ ऊपर-नीचे (डिफ़ॉल्ट), ऊपर से नीचे बाएँ-से-दाएँ तक पाठ के बीच मुख्य रूप से टॉगल करें । यदि आपने पहला बोनस किया है तो उसे टॉप-टू-बॉटम मोड में कॉलम के लिए काम करना चाहिए। (-100 बाइट्स)उदाहरण के लिए:
|\ | \ | \______ | || | \ || Lor | \ || em | \||_____|
हो जाता है
|\ | \ | \______ | || | \ || Lrm | \ || oe | \||_____|
\033[2J\033[;H