रेगेक्स पॉलीग्लॉट बनाएं


19

एक रेगेक्स लिखें जो कम से कम 2 रेगेक्स फ्लेवर (या संस्करण) में काम करता है, और प्रत्येक स्वाद (या संस्करण) में एक अलग स्ट्रिंग से मेल खाता है जो इसमें चल रहा है।

इस चुनौती में मिलान किए जाने वाले तार उबंटू कोड नामों के पहले शब्द हैं, जिन्हें नीचे सूचीबद्ध किया गया है। आपके regex को सूची के शीर्ष से मेल खाना है। यही है, यदि आपका रेगेक्स 3 स्वादों में काम करता है, तो उसे मिलान करना होगा Warty Hoaryऔर Breezyदूसरों को नहीं।

Warty
Hoary
Breezy
Dapper
Edgy
Feisty
Gutsy
Hardy
Intrepid
Jaunty
Karmic
Lucid
Maverick
Natty
Oneiric
Precise
Quantal
Raring
Saucy
Trusty
Utopic
Vivid
Wily
Xenial
Yakkety
Zesty
17.10
18.04
18.10
19.04
19.10
...

यदि आपका रेगेक्स 26 से अधिक स्वादों में काम करता है, तो आप इसके बजाय उबंटू संस्करण संख्याओं का मिलान कर सकते हैं। 17.10 से शुरू, प्रत्येक नए स्वाद के लिए, दूसरी संख्या को 10 में बदल दें यदि यह 04 था, और पहले नंबर को बढ़ाएं और दूसरे को 04 में बदलें।

प्रत्येक स्वाद में, आपका रेगेक्स केवल कथित स्ट्रिंग से मेल खाना चाहिए और कुछ और नहीं (कोड नामों तक सीमित नहीं)। अनुगामी newlines कोई फर्क नहीं पड़ता। इसका अर्थ है कि आपका रेगेक्स या तो केवल स्ट्रिंग को बिना अनुवर्ती न्यूलाइन के मैच कर सकता है, केवल स्ट्रिंग को अनुगामी न्यूलाइन के साथ मैच कर सकता है, या दोनों का मिलान कर सकता है। और यह अलग-अलग स्वादों में सुसंगत नहीं होता है। आप मान सकते हैं कि इनपुट मुद्रण योग्य ASCII में है (यदि एक है, तो अनुगामी न्यूलाइन को छोड़कर)।

आपका स्कोर (आपके कोड की लंबाई + 10) / ((स्वादों की संख्या) ^ 2) है। सबसे कम स्कोर जीतता है।


1
बस जांच करने के लिए - "प्रत्येक स्वाद में, आपके रेगेक्स को केवल कथित स्ट्रिंग और कुछ नहीं से मेल खाना चाहिए।", इसका मतलब यह है कि प्रत्येक रेगेक्स को केवल एक उबंटू संस्करण नाम से मेल खाना चाहिए और अन्य नामों में से कोई भी नहीं, लेकिन संभावित रूप से अन्य गैर-संस्करण से मेल खा सकता है। नाम तार, या इसका मतलब यह है कि regex केवल उस सटीक स्ट्रिंग और किसी अन्य तार से मेल नहीं खा सकता है, भले ही वह ऊपर की सूची में एक संस्करण का नाम न हो?
Sp3000

@ Sp3000 यह उस सटीक स्ट्रिंग से मेल खाना चाहिए, और कोई अन्य तार नहीं।
jimmy23013 10

जवाबों:


24

87 बाइट्स, 5 फ्लेवर, (87 + 10) / 25 = 3.88

^(((?=W)[[:word:]&&]art|Ho(?=a)\ar|Bre(?=ez)[]e]\z|E(?=dg)[[d]]g)y|(?=Da)[D-[E]]apper)$

मैं अभी के लिए जायके का परीक्षण करने के लिए आसान है, जो हैं:

सामान्य संरचना है ^((...)y|...)$, यानी अनुगामी yएस बाहर फैक्टरिंग और एंकर जोड़ना।

Warty (PCRE)

(?=W)[[:word:]&&]art

पीसीआरई और रूबी में, [[:word:]]एक पोसिक्स चरित्र वर्ग है जो एक शब्द चरित्र से मेल खाता है - दूसरे स्वादों में आपको एक [[:word:]चरित्र वर्ग मिलता है &&], फिर शाब्दिक होता है , जो मुखर को विफल करता (?=W)है। रूबी को विफल करने के लिए, &&POSIX वर्ग को कुछ भी नहीं करने के लिए प्रयोग किया जाता है, जबकि PCRE में &&इसका कोई विशेष अर्थ नहीं है।

होरी (जावास्क्रिप्ट)

Ho(?=a)\ar

जो भी कारण के लिए, जावास्क्रिप्ट केवल गुच्छा से बाहर का स्वाद है जहां \aएक शाब्दिक है a- अन्य स्वादों में यह घंटी चरित्र (एएससीआईआई 7) से मेल खाता है।

ब्रीज़ी (पायथन)

Bre(?=ez)[]e]\z

पायथन और जावास्क्रिप्ट में, \zएक शाब्दिक है z- दूसरे स्वादों में यह $स्ट्रिंग एंकर के अंत के बराबर है । जावास्क्रिप्ट को विफल करने के लिए हम चार क्लास का उपयोग करते हैं []e], जो एक खाली चार वर्ग है और []फिर e]जावास्क्रिप्ट में शाब्दिक और []e]पायथन में दो-चार वर्ग है।

डैपर (.NET)

(?=Da)[D-[E]]apper

में .NET, [D-[E]]एक सेट अंतर है, सेट को हटाने [E]से [D]। पीसीआरई, जावास्क्रिप्ट और पायथन में, हमारे पास वर्ग है और [D-[E]फिर शाब्दिक है ]। रूबी थोड़ी अलग है, लेकिन किसी कारण के लिए यह एक वर्ग के रूप में पर्स करता है [D-[E]]जो केवल मेल खाता है E, और मुझे अभी तक यह पता लगाना है कि क्यों ...

एडी (रूबी)

E(?=dg)[[d]]g

रूबी चार वर्गों के भीतर चार वर्गों की अनुमति देता है, इसलिए [[d]]वास्तव में इसके समकक्ष है [d], या बस d। अन्य जायके में, हम [[d]तो एक शाब्दिक है ]

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.