पायथन के अचार मॉड्यूल का उपयोग क्रमांकन के लिए किया जाता है, जिससे किसी वस्तु को इस तरह से डंप किया जा सकता है कि इसे बाद में फिर से संगठित किया जा सके। इसके लिए, अचार एक साधारण स्टैक-आधारित भाषा का उपयोग करता है।
चीजों को सरल रखने के लिए, हम इस भाषा के एक छोटे उपसमूह से निपटेंगे:
( Push a mark to the stack
S'abc'\n Push a string to the stack (here with contents 'abc')
l Pop everything up to the last mark, wrapping all but the mark in a list
t Pop everything up to the last mark, wrapping all but the mark in a tuple
. Terminate the virtual machine
आपका कार्य भाषा के इस सबसेट को लागू करना है। ध्यान दें कि \n
यहां एक शाब्दिक न्यूलाइन है, और न्यूलाइन्स वास्तव में भाषा के लिए महत्वपूर्ण हैं।
GolfScript या से परिचित भाषाओं CJam की तरह, उन लोगों के लिए (
और l/t
करने के लिए इसी तरह काम करते हैं [
और ]
क्रमशः।
इनपुट
चीजों को सरल रखने के लिए, इनपुट हमेशा मान्य होगा। विशेष रूप से, आप इनपुट के बारे में निम्नलिखित मान सकते हैं:
- स्ट्रिंग्स में केवल लोअरकेस अक्षर और स्पेस शामिल होंगे
[a-z ]
, और हमेशा सिंगल कोट्स का उपयोग करेंगे। - कोई बाहरी वर्ण नहीं होगा, जिसमें सभी निर्देश ऊपर दिए गए हों। उदाहरण के लिए, इसका मतलब है कि नए किस्में केवल तार के बाद ही आएंगी।
- प्रत्येक
l/t
का(
इससे पहले मिलान होता है और इसके बाद प्रत्येक(
का मिलानl/t
होता है। कम से कम एक भी होगा(
। - बिल्कुल एक होगा
.
, और यह हमेशा अंतिम चरित्र होगा।
आप कमांड लाइन, STDIN या फ़ंक्शन तर्क के माध्यम से इनपुट ले सकते हैं। यदि आप चाहें, तो आप एक बहु-पंक्ति स्ट्रिंग के बजाय एक एकल न्यूलाइन-एस्केप स्ट्रिंग का उपयोग कर सकते हैं, लेकिन कृपया इसे अपने उत्तर में निर्दिष्ट करें।
उत्पादन
आउटपुट अंतिम ऑब्जेक्ट का प्रतिनिधित्व होना चाहिए, जिसे STDOUT में मुद्रित किया गया है या एक स्ट्रिंग के रूप में लौटाया गया है । विशेष रूप से:
स्ट्रिंग को बीच में सामग्री के साथ एकल उद्धरण खोलने और बंद करने का प्रतिनिधित्व किया जाता है, जैसे
S'abc' -> 'abc'
। आप इस चुनौती के लिए दोहरे उद्धरण चिह्नों का उपयोग नहीं कर सकते, भले ही उन्हें पायथन में अनुमति दी गई हो।सूचियों को अल्पविराम से घिरे तत्वों
[]
(जैसे['a','b','c']
) से दर्शाया गया है, जबकि टुपल्स अल्पविराम द्वारा अलग किए गए तत्वों से घिरे हुए हैं()
(जैसे('a','b','c')
)।- रिक्त स्थान मायने नहीं रखते, उदाहरण के
('a', 'b', 'c' )
लिए ठीक है। - समापन कोष्ठक से पहले आपके पास अल्पविराम नहीं हो सकता। ध्यान दें कि यह जानबूझकर अलग-अलग भाषाओं के लिए चीजों को आसान बनाने के लिए पायथन सिंटैक्स नियमों से अलग है, और यह भी केवल पायथन में सूची / टपल बनाने के लिए कठिन बनाने के लिए, फिर इसे आउटपुट करें, इस कारण कि एकल-तत्व टपल का प्रतिनिधित्व कैसे किया जाता है। चुनौती, हमें
('a')
विरोध के रूप में('a',)
) की आवश्यकता है।
उदाहरण
उपरोक्त पाठ कठिन लग सकता है, लेकिन निम्नलिखित उदाहरण चीजों को थोड़ा स्पष्ट करना चाहिए।
(l.
संभावित उत्पादन: []
(t.
संभावित उत्पादन: ()
(S'hello world'
l.
संभावित उत्पादन: ['hello world']
(S'string one'
S'string two'
S'string three'
t.
संभावित उत्पादन: ('string one', 'string two', 'string three')
(S'a'
(S'b'
S'c'
lt.
संभावित उत्पादन: ('a',['b','c'])
((S'a'
S'b'
(lS'c'
t(S'd'
tl.
संभावित उत्पादन: [('a', 'b', [], 'c'), ('d')]
((S'a'
((S'b'
t(S'c'
lS'd'
(((ltlS'e'
S'f'
lS'g'
tl.
संभावित उत्पादन: [('a',[('b'),['c'],'d',[([])],'e','f'],'g')]
नियम
- यह कोड-गोल्फ है , इसलिए सबसे कम बाइट्स में कोड जीतता है।
- पायथन अचार के साथ काम करने के लिए डिज़ाइन की गई किसी भी कार्यक्षमता की अनुमति नहीं है।
सुरक्षा नोट: वास्तविक कोड में, केवल उन स्रोतों से अप्रकाशित करें जिन पर आप भरोसा करते हैं, अन्यथा आपको एक बुरा cos\nsystem\n(S'rm -rf'\ntR.
आश्चर्य मिल सकता है
S'abc'\n
धक्काabc
या'abc'
?