इस समय आपका कार्य POSIX expand(1)
उपयोगिता का एक प्रकार लागू करना है जो टैब को रिक्त स्थान तक विस्तारित करता है।
आपका प्रोग्राम एक टैबस्टॉप विनिर्देशन लेना है और फिर अगले टैबस्टॉप तक पहुंचने के लिए उचित मात्रा में रिक्त स्थान के साथ इनपुट में मानक पर इनपुट टैब को बदलें और टैब वर्णों को बदलें। परिणाम को मानक से बाहर लिखा जाना चाहिए ।
टैबस्टॉप विनिर्देशन
एक tabstop विनिर्देश या तो एक नंबर, या tabstops की एक अल्पविराम द्वारा पृथक सूची के होते हैं। एकल संख्या के मामले में, इसे दोहराया जाता है जैसे कि इसका गुणक अल्पविराम से अलग की गई सूची में होता है (जैसे कि 4
कार्य करता है 4,8,12,16,20,...
)। अल्पविराम से अलग की गई सूची में प्रत्येक प्रविष्टि एक सकारात्मक रूप से पूर्णांक होती है, जो कि पहले से एक उपसर्ग होती है +
। एक +
उपसर्ग अल्पविराम से अलग सूची में पिछले मूल्य के लिए एक रिश्तेदार अंतर को दर्शाता है। सूची में पहला मान पूर्ण होना चाहिए (अर्थात उपसर्ग)। टैबस्टॉप अगले गैर-अंतरिक्ष वर्ण (विस्तारित टैब के बाद) के कॉलम को निर्दिष्ट करता है, नंबर 0. टैब के रूप में लिया गया सबसे बाएं स्तंभ हमेशा कम से कम एक स्थान तक विस्तारित होना चाहिए।
इनपुट आउटपुट
टैबस्टॉप विनिर्देश को या तो प्रोग्राम के पहले कमांड-लाइन पैरामीटर के रूप में लिया जा सकता है, या मानक से इनपुट की पहली पंक्ति (एक नई लाइन द्वारा समाप्त) के रूप में अपने विवेक पर पढ़ा जा सकता है। टैबस्टॉप को पढ़ने के बाद, शेष इनपुट (पूर्व इनपुट, पूर्व मामले में) जब तक ईओएफ को संसाधित और विस्तारित नहीं किया जाना है। विस्तारित आउटपुट मानक आउट के लिए लिखा जाएगा।
सभी विस्तारित टैबस्टॉप और सभी इनपुट को अधिकतम 80 कॉलम चौड़ा माना जाता है। सभी विस्तारित टैबस्टॉप सख्ती से बढ़ रहे हैं।
उदाहरण
टैबस्टॉप विनिर्देशन इनपुट के साथ और दोनों के 4,6,+2,+8
बराबर है4,6,8,16
ab<Tab>c
<Tab><Tab>d<Tab>e<Tab>f
में विस्तारित किया गया है ( ␣
एक स्थान को इंगित करता है)
ab␣␣c
␣␣␣␣␣␣d␣e␣␣␣␣␣␣␣f
01234567890123456 (Ruler for the above, not part of the output)
1111111
स्कोरिंग शुद्ध कोड-गोल्फ है ; सबसे छोटा कोड जीतता है।
x+($1?i:0)
छोटे के रूप में लिख सकते हैं$1?x+i:x
?