वार्म अप: रेगेक्स, पेपर, कैंची
यह वह चुनौती है जिसे मैं मूल रूप से पोस्ट करना चाहता था, यह महसूस करने से पहले कि कुछ बहुत ही कम समाधान मौजूद हैं। फिर भी, नीचे दी गई वास्तविक चुनौती की तैयारी के बारे में सोचना एक दिलचस्प समस्या हो सकती है।
तीन रेगेक्स आर , पी और एस लिखें जैसे कि वे चक्रीय रॉक, पेपर, कैंची फैशन में एक-दूसरे से मेल खाते हों। विशेष रूप से, आर से मेल खाता है एस , एस से मेल खाता पी और पी से मेल खाता है आर , लेकिन आर नहीं है से मेल पी , एस नहीं करता है से मेल आर और पी से मेल नहीं खाता एस । यहाँ एक आसान तालिका है:
Regex Matches Doesn't match
R S P
P R S
S P R
इससे कोई फर्क नहीं पड़ता कि R , P और S किसी भी अन्य इनपुट पर करते हैं, जिसमें स्वयं भी शामिल है।
यहां, मिलान का अर्थ है कि इनपुट के कुछ (संभवतः खाली) मिलान से मेल खाता है। मैच को पूरे इनपुट को कवर करने की आवश्यकता नहीं है।
चुनौती: रेगेक्स, पेपर, कैंची, छिपकली, स्पॉक
इस चुनौती के लिए, आप आरपीएस संस्करण रॉक, पेपर, कैंची, छिपकली, स्पॉक ( द बिग बैंग थ्योरी द्वारा लोकप्रिय ) के आधार पर, उपरोक्त समस्या का एक कठिन संस्करण हल करेंगे । RPSLV में, पांच अलग-अलग प्रतीक हैं, जो एक दूसरे को दो चक्रों में हराते हैं:
- रॉक → कैंची → छिपकली → कागज → स्पॉक → रॉक
- रॉक → छिपकली → स्पॉक → कैंची → पेपर → रॉक
आपको पांच रेगेक्स आर , पी , एस , एल और वी लिखना चाहिए जो इस संरचना की नकल करते हैं जब एक दूसरे को इनपुट के रूप में दिया जाता है। यहाँ इसी तालिका है:
Regex Matches Doesn't match
R L, S V, P
L V, P S, R
V S, R P, L
S P, L R, V
P R, V L, S
बस स्पष्ट होने के लिए आपको चाहिए नहीं स्ट्रिंग से मेल R
, P
, आदि, लेकिन अन्य regexes। उदाहरण के लिए यदि आपके regex आर है ^\w$
उदाहरण के लिए, तो पी और वी स्ट्रिंग मिलान करने ^\w$
, जबकि एस और एल नहीं करना चाहिए।
फिर से, मैच का मतलब है कि इनपुट का कम से कम एक (संभवतः खाली) मिलान किया जाता है। मैच को पूरे इनपुट को कवर करने की आवश्यकता नहीं है। उदाहरण के लिए \b
(शब्द सीमा) मैच hello
(शुरुआत में और अंत में), लेकिन यह मेल नहीं खाता (^,^)
।
आप किसी भी रेगेक्स स्वाद का उपयोग कर सकते हैं, लेकिन कृपया अपने उत्तर में पसंद बताएं और यदि संभव हो तो चुने हुए स्वाद के लिए ऑनलाइन परीक्षक को लिंक प्रदान करें। आप किसी भी regex सुविधाओं का उपयोग नहीं कर सकते हैं जो आपको फ़्लॉवर की होस्ट भाषा (पर्ल फ्लॉवर्स के e
संशोधक की तरह) में कोड लागू करने देता है ।
/regex/
अन्य के लिए इनपुट के रूप में दिए जाने पर डेलिमिटर (जैसे ) को रेगेक्स में शामिल नहीं किया जाता है, और आप उन संशोधक का उपयोग नहीं कर सकते हैं जो रेगेक्स के बाहर हैं। कुछ स्वाद अभी भी आपको इनलाइन सिंटैक्स जैसे संशोधक का उपयोग करने देते हैं (?s)
।
आपका स्कोर बाइट्स में पाँच regexes की लंबाई का योग है। नीचा बेहतर है।
यह इस समस्या का एक कार्यशील समाधान खोजने के लिए बहुत सरल हो जाता है, क्योंकि यह पहली बार में लग सकता है, लेकिन मुझे आशा है कि एक इष्टतम समाधान खोजना काफी मुश्किल है।
\b
(शब्द सीमा) मैच hello
(शुरुआत में और अंत में), लेकिन यह मेल नहीं खाता (^,^)
। "