पवित्र युद्ध अंतरिक्ष बनाम टैब पर लड़े गए हैं। (और निश्चित रूप से बेहतर होने के नाते रिक्त स्थान, जीता।) - एलेक्स ए।
S ome peo p le अभी भी एक ccept से इंकार करता है कि whi c h, cl e arly s upreme है। तुम बस प्राप्त हो गया है एक फ़ाइल incor का उपयोग कर फिर से सीटी, ख विज्ञापन, और inf ई whi के rior प्रपत्र टी स्पास, और अब टी वह शेष भाग ई फ़ाइल एक के एनटीएस आर ई दागी और बर्बाद कर दिया।
आप तय करते हैं कि आप उस व्यक्ति को दिखा सकते हैं जिसने आपको फ़ाइल भेजी थी कि वे कितने गलत हैं - हिंसक तरीके से।
विवरण
जैसा कि शीर्षक से पता चलता है, आपकी चुनौती एक ऐसी फ़ाइल लेने की है जिसमें एक या अधिक टैब हों:
this is an evil tab onoes
और बेरहमी से उन्हें टुकड़ों में तोड़ दो:
this is an evil tab
o
n
o
e
s
ध्यान दें कि स्टैक एक्सचेंज सॉफ़्टवेयर शाब्दिक टैब को चार स्थानों में बदल देता है (क्योंकि यह सही है), इसलिए इस पोस्ट के भीतर टैब चार स्थानों पर प्रदर्शित होंगे। हालाँकि, आपके प्रोग्राम के इनपुट में वास्तविक टैब होंगे।
चुनौती
समाधान को इनपुट के रूप में एकल स्ट्रिंग लेना चाहिए, जिसमें मुद्रण योग्य ASCII, newlines और टैब हो सकते हैं। इनपुट में हमेशा कम से कम एक टैब होगा।
निम्नलिखित नियमों के साथ आउटपुट एक ही स्ट्रिंग होना चाहिए:
निर्देशांक (0,0) पर कर्सर शुरू करें और दाईं ओर एक दिशा में। निर्देशांक (स्तंभ, पंक्ति), शून्य-अनुक्रमित हैं, और दिशा वह है जिस तरह से आपको वर्ण को प्रिंट करने के बाद कर्सर को स्थानांतरित करना चाहिए।
स्ट्रिंग में प्रत्येक वर्ण के लिए:
यदि यह एक नई रेखा है, तो निर्देशांक (0, n) पर जाएं, जहां n स्ट्रिंग में अब तक (इस एक सहित) में नई संख्याओं की संख्या है, और दिशा को दाईं ओर रीसेट करें।
यदि यह एक टैब है, तो दो रिक्त स्थान, कर्सर दिशा 90 डिग्री दक्षिणावर्त घुमाएं , और दो और रिक्त स्थान आउटपुट करें, टैब में प्रभावी रूप से "ब्रेकिंग" करें। यहां एक दृश्य उदाहरण दिया गया है, जहां एक टैब के रूप में
--->
और रिक्त स्थान के रूप में दर्शाया गया है·
:foo--->bar--->baz
हो जाता है
foo··· · b a r · · zab··
अन्यथा, बस कर्सर पर चरित्र का उत्पादन करें और कर्सर को वर्तमान दिशा में एक कदम बढ़ाएं।
चूंकि आप स्ट्रिंग को शुरू से अंत तक पढ़ रहे हैं, इसलिए संभव है कि आपको मौजूदा वर्णों के "शीर्ष पर" लिखना होगा - यह ठीक है। उदाहरण के लिए, इनपुट
foo--->bar
spaces are superior
के उत्पादन में परिणाम होना चाहिए
foo
b
spaces are superior
r
आप चुन सकते हैं कि "टूटे हुए टैब" को अन्य पात्रों को अधिलेखित करना चाहिए - मूल इरादा यह था कि वे नहीं करते हैं, लेकिन कल्पना अस्पष्ट थी, इसलिए यह आपका निर्णय है।
इसके अलावा, इन नियमों को लागू करने के बाद, आप भी कर सकते हैं
आप जितने चाहें उतने अनुगामी स्थान जोड़ या हटा सकते हैं।
एक एकल अनुगामी न्यूलाइन की एक अधिकतम जोड़ें।
इनपुट में अनुगामी स्थान कभी नहीं होगा ; यह भी अग्रणी या अनुगामी newlines कभी नहीं होगा। आप हमेशा यह मान सकते हैं कि आपको कभी भी कॉलम या पंक्ति से कम 0 (यानी स्क्रीन से दूर) लिखने की आवश्यकता नहीं होगी।
परीक्षण का मामला
इस परीक्षण मामले में टैब का प्रतिनिधित्व --->
इसलिए किया जाता है क्योंकि अन्यथा एसई उन्हें जकड़ लेता है।
इनपुट:
Test case. Here's a tab--->there's a tab--->everywhere a tab--->tab--->this is some more text
blah
blah
blah blah blah blah blah blah--->blaah--->blaah--->blah--->blaaaaah--->blah--->blah--->blah--->blah--->blah
आउटपुट:
Test case. Here's a tab
blah
blah t
blah blah blah blah blah blah
blaablah
r b
e l b
h 'h a l
a sa a a
l l h h
this is some mobe tbxt
haalhalb
b a
a b
t
bat a erehwyreve
फैंसी एनीमेशन:
नियम
- यह कोड-गोल्फ है , इसलिए बाइट्स में सबसे छोटा कोड जीत जाएगा!
(0,0)
करना है तो क्या आपका मतलब है कि हमें पहले कंसोल को खाली करने की आवश्यकता है, या क्या आपको सिर्फ कर्सर की डिफ़ॉल्ट स्थिति से मतलब है?