इस StackOverflow प्रश्न से प्रेरित है ।
इनपुट:
हम तीन इनपुट लेंगे:
Dविभाजित करने के लिए एक सीमांकक चरित्रIदो में से एक चरित्र जिसे हम सीमांकित चरित्र को अनदेखा करते हैं (मुझे पता है, यह अस्पष्ट लगता है, लेकिन मैं इसे नीचे बताऊंगा)- एक स्ट्रिंग
S
आउटपुट:
विभाजन के बाद सबस्ट्रिंग युक्त एक सूची / सरणी।
उदाहरण:
Input:
D = ','
I = '"'
S = '11020199,"Abc ",aduz,,444,bieb,dc,2 ,2222.00,whatever 5dc,222.22,22.00,"98,00","12,000,000",21-09-2018, 06:00,",-,"'
Output:
['11020199', 'Abc ', 'aduz', '', '444', 'bieb', 'dc', '2 ', '2222.00', 'whatever 5dc', '222.22', '22.00', '98,00', '12,000,000', '21-09-2018', ' 06:00', ',-,']
क्यों? कॉमा पर विभाजन आम तौर पर भी विभाजित होता है 98,00, 12,000,000और ,-,दो / तीन टुकड़ों में। लेकिन क्योंकि वे Iइनपुट चरित्र के भीतर हैं , इसलिए हम यहां विभाजन को अनदेखा करते हैं।
चुनौती नियम:
- आप मान सकते हैं
Iकि इनपुट-स्ट्रिंग में हमेशा समान मात्रा में वर्ण होंगे। - आप मान सकते हैं कि चरित्र के
Iपास हमेशा एकDअगला होगा (सिवाय इसके कि यह इनपुट का पहला या अंतिम चरित्र है) जो अभी भी ठीक से विभाजित हो सकता है। तो आपके पास ऐसा कुछ नहीं होगाD = ','; I = '"'; S = 'a,b"c,d"e,f', न ही ऐसा कुछD=','; I='"'; S='a",b,"c'। - इनपुट स्ट्रिंग
Sया तो में से कोई भी हो सकता हैDयाI। यदि यह नहीं हैD, तो हम केवल आइटम के रूप में पूरे इनपुट-स्ट्रिंग के साथ एक सूची आउटपुट करते हैं। - उत्पादन सूची अक्षर नहीं होगा
Iअब और, तब भी जब यह कोई निहितD(जैसा कि आप देख सकते हैं"Abc "बनने'Abc 'ऊपर के उदाहरण में)। - यह संभव है कि प्रतिस्थापन
Iकेवल भीतर होता हैD। उदाहरण के लिए: मेंD = ','; I = '"'; S = 'a,",",b,"c","d,e,,",f'परिणाम होगा['a', ',', 'b', 'c', 'd,e,,', 'f']। - आप यह मान सकते हैं कि
Dकभी भी शुरू या अंत मेंSनहीं होगा, इसलिए आपको खाली वस्तुओं को पीछे छोड़ने / अग्रणी करने से निपटना नहीं होगा। - जब किसी इनपुट में दो समीप होते हैं
D, तो हमारे पास एक खाली आइटम होगा। Ie मेंD = ','; I = '"'; S = 'a,"b,c",d,,e,"",f'परिणाम होगा['a', 'b,c', 'd', '', 'e', '', 'f']। - आप मान सकते हैं कि इनपुट और आउटपुट में रेंज में केवल मुद्रण योग्य ASCII शामिल होगा
[32, 126](इसलिए टैब और नईलाइन को छोड़कर)। - आपको किसी सूची / सरणी को वापस करने / आउटपुट करने के बजाय सभी आइटमों को नई-पंक्तिबद्ध सीमांकित करने की अनुमति है (विशेषकर उन भाषाओं के लिए जिनके पास सूची / सरणियाँ नहीं हैं; यानी रेटिना)।
- यदि आप बाइट्स सहेजते हैं तो आपको सूची को उल्टे क्रम में आउटपुट करने की अनुमति है। आपको इसे क्रमबद्ध या 'फेरबदल' क्रम में आउटपुट करने की अनुमति नहीं है, हालांकि। तो या के
D = ','; I = 'n'; S = 'a,2,b,3,c'रूप में उत्पादन किया जा सकता है , लेकिन उदाहरण के लिए या नहीं ।[a,2,b,3,c][c,3,b,2,a][2,3,a,b,c,][a,3,b,c,2]
सामान्य नियम:
- यह कोड-गोल्फ है , इसलिए बाइट्स जीत में सबसे छोटा जवाब है।
कोड-गोल्फ भाषाओं को गैर-कोडगॉल्फिंग भाषाओं के साथ उत्तर पोस्ट करने से हतोत्साहित न करें। 'किसी भी' प्रोग्रामिंग भाषा के लिए यथासंभव संक्षिप्त उत्तर के साथ आने का प्रयास करें। - मानक नियम आपके उत्तर के लिए लागू होते हैं , इसलिए आपको उचित पैरामीटर और रिटर्न-टाइप, पूर्ण कार्यक्रमों के साथ STDIN / STDOUT, फ़ंक्शन / विधि का उपयोग करने की अनुमति है। तुम्हारा कॉल।
- डिफ़ॉल्ट लूपोल्स वर्जित हैं।
- यदि संभव हो, तो कृपया अपने कोड (यानी TIO ) के लिए एक परीक्षण के साथ एक लिंक जोड़ें ।
- साथ ही, आपके उत्तर के लिए स्पष्टीकरण जोड़ना अत्यधिक अनुशंसित है।
परीक्षण के मामलों:
Input:
D = ','; I = '"'; S = 'a,"b,c",d,,e,"",f'
Output:
['a', 'b,c', 'd', '', 'e', '', 'f']
Input:
D = ','; I = '"'; S = '11020199,"Abc ",aduz,,444,bieb,dc,2 ,2222.00,whatever 5dc,222.22,22.00,"98,00","12,000,000",21-09-2018, 06:00,",-,"'
Output:
['11020199', 'Abc ', 'aduz', '', '444', 'bieb', 'dc', '2 ', '2222.00', 'whatever 5dc', '222.22', '22.00', '98,00', '12,000,000', '21-09-2018', ' 06:00', ',-,']
Input:
D = ' '; I = ','; S = 'this is a test , to see if you understand it, or not , hmmm, I think I have too many commas , or not , perhaps..'
Output:
['this', 'is', 'a', 'test', ' to see if you understand it', 'or', 'not', ' hmmm', 'I', 'think', 'I', 'have', 'too', 'many', 'commas', ' or not ', 'perhaps..']
Input:
D = 'x'; I = 'y'; S = 'contains no lowercase X nor Y'
Output:
['contains no lowercase X nor Y']
Input:
D = '1'; I = '3'; S = '3589841973169139975105820974944592078316406286208948254211370679314'
Output: ['58984197', '69', '9975105820974944592078', '64062862089482542', '', '70679', '4']
Input:
D = ' '; I = 'S'; S = 'regular split on spaces'
Output:
['regular', 'split', 'on', 'spaces']
D = ','; I = '"'; S = ',"a,b",c,,d,""'मैं सिर्फ देखा के लिए विफल । मैं चुनौती को थोड़ा संशोधित करूँगा ताकि खाली आइटम शुरू या अंत में संभव न हों। अतीत में जावा और 05AB1E दोनों में अनुभव के आधार पर, मुझे पता है कि विभाजन के बाद खाली वस्तुओं को कैसे निराश किया जा सकता है जब भाषा डिफ़ॉल्ट रूप से सही ढंग से नहीं करती है। इस तरह के एक परीक्षण मामलों को अभी भी समर्थित होना चाहिए: D = ','; I = '"'; S = 'a,"b,c",d,,e→ ['a', 'b,c', 'd', '', 'e']बीच में एक खाली वस्तु के साथ।
'1,"2,3"' -> ['2,3','1']
[a,b,c]और [c,b,a]आउटपुट की अनुमति है, लेकिन उदाहरण के लिए [a,c,b]या [b,a,c]नहीं।
D=','; I='"'; S='a",b,"c'यह एक वैध इनपुट भी है?
"", "'ll remove all ", "")