हमें पहले से ही एक मेटा-रेगेक्स-गोल्फ समस्या है, जो कि xkcd कॉमिक से प्रेरित है
लेकिन, यह रेगेक्स गोल्फ मजेदार भी लगता है! मैं अमेरिका के राज्यों और इटली के क्षेत्रों के बीच अंतर करना चाहता हूं। क्यूं कर? मैं दोनों देशों का नागरिक हूं, और मुझे हमेशा इस * से परेशानी है ।
इटली के क्षेत्र हैं
Abruzzo, Valle d'Aosta, Puglia, Basilicata, Calabria, Campania, Emilia-Romagna, Friuli-Venezia Giulia, Lazio, Liguria, Lombardia, Marche, Molise, Piemonte, Sardegna, Sicilia, Trentino-Alto Adige/Südtirol, Toscana, Umbria, Veneto
और संयुक्त राज्य अमेरिका के राज्य हैं
Alabama, Alaska, Arizona, Arkansas, California, Colorado, Connecticut, Delaware, Florida, Georgia, Hawaii, Idaho, Illinois, Indiana, Iowa, Kansas, Kentucky, Louisiana, Maine, Maryland, Massachusetts, Michigan, Minnesota, Mississippi, Missouri, Montana, Nebraska, Nevada, New Hampshire, New Jersey, New Mexico, New York, North Carolina, North Dakota, Ohio, Oklahoma, Oregon, Pennsylvania, Rhode Island, South Carolina, South Dakota, Tennessee, Texas, Utah, Vermont, Virginia, Washington, West Virginia, Wisconsin, Wyoming
आपका काम एक प्रोग्राम लिखना है जो इन सूचियों को एक नियमित अभिव्यक्ति के साथ अलग करता है। यह एक नया खेल है, इसलिए यहाँ है
नियम
- सूचियों के बीच अंतर एक एकल मिलान नियमित अभिव्यक्ति के साथ किया जाना चाहिए।
- आपका स्कोर उस नियमित अभिव्यक्ति की लंबाई है, छोटा बेहतर है।
स्पष्ट होने के लिए: सभी कार्य नियमित अभिव्यक्ति द्वारा किए जाने चाहिए - कोई फ़िल्टरिंग, कोई प्रतिस्थापन नहीं, कोई कुछ भी नहीं ... भले ही वे नियमित अभिव्यक्ति के साथ भी किए गए हों। यही है, इनपुट को सीधे एक नियमित अभिव्यक्ति में पारित किया जाना चाहिए, और केवल बाइनरी उत्तर (मैच / कोई मैच) कोड के बाद के हिस्सों द्वारा उपयोग किया जा सकता है। इनपुट का कभी भी निरीक्षण या परिवर्तन नहीं किया जाना चाहिए लेकिन मिलान अभिव्यक्ति। अपवाद : रूबी के लिए कुछ के साथ एक नईलाइन खाने chomp
से ठीक है।
आपके कार्यक्रम को एक ही प्रविष्टि लेनी चाहिए (वैकल्पिक रूप से \n
या इसके बाद EOF
यदि यह चीजों को आसान बनाता है) तो स्टड से सूची में से, और उस सूची के नाम को प्रिंट करने के लिए प्रिंट करें। इस मामले में, हमारी सूचियों के नाम Italy
और हैं USA
।
अपने कोड का परीक्षण करने के लिए, बस इसके माध्यम से दोनों सूची चलाएं। सूची में जो तार नहीं होते हैं उनके लिए व्यवहार अपरिभाषित हो सकता है।
स्कोरिंग मुद्दे
यह भाषा-दर-भाषा के आधार पर किया जा सकता है। पर्ल में,
m/foobarbaz/
एक मिलान नियमित अभिव्यक्ति है। हालाँकि, पायथन में,
import re
re.compile('foobarbaz')
वही काम करता है। हम पायथन के लिए उद्धरणों की गणना नहीं करेंगे, इसलिए मैं कहता हूं कि हम पर्ल में m/
अंतिम और अंतिम गणना नहीं करते हैं /
। दोनों भाषाओं में, उपरोक्त को 9 का स्कोर प्राप्त करना चाहिए।
अभिजीत द्वारा उठाए गए एक बिंदु को स्पष्ट करने के लिए , मिलान अभिव्यक्ति की वास्तविक लंबाई स्कोर है, भले ही आप इसे गतिशील रूप से उत्पन्न करें। उदाहरण के लिए, यदि आपको एक जादुई अभिव्यक्ति मिली m
,
n="foo(bar|baz)"
m=n+n
तब आपको 12 के स्कोर की सूचना नहीं देनी चाहिए: m
लंबाई 24 है। और अतिरिक्त स्पष्ट होने के लिए, उत्पन्न नियमित अभिव्यक्ति इनपुट पर निर्भर नहीं हो सकती है। इसे नियमित अभिव्यक्ति में पास करने से पहले इनपुट को पढ़ना होगा।
उदाहरण सत्र
input> Calabria
Italy
input> New Hampshire
USA
input> Washington
USA
input> Puglia
Italy
* वास्तव में, यह एक झूठ है। मुझे इससे कभी कोई परेशानी नहीं हुई।
USA
इस तरह के एक स्ट्रिंग के मामले में लौटने की अनुमति देता है , इसलिए आपको बस इतालवी क्षेत्रों की जांच करनी होगी, और USA
अन्यथा वापस लौटना होगा ।