चक्रवृद्धि ब्याज का प्रतिलोम


9

कोरोन्कोरको यौगिक हित के लिए फिनिश शब्द है । हम अपने स्ट्रिंग्स में चक्रवृद्धि ब्याज नहीं चाहते हैं, इसलिए इसे बाहर करने के लिए सबसे कम संभव नियमित अभिव्यक्ति पाते हैं।

केवल एक अपरकेस अल्फाबेटिक अक्षर AZ युक्त स्ट्रिंग को देखते हुए, सबसे कम संभव नियमित अभिव्यक्ति निर्धारित करें जो स्ट्रिंग से मेल खाती हो अगर इसमें सबस्ट्रिंग नहीं है KORONKORKO। कोई स्ट्रिंग जिसमें KORONKORKOएक विकल्प के रूप में शामिल है, को रेगेक्स से मेल नहीं खाना चाहिए।

केवल वर्ण A- Z, [, ], -, ^, , ?, *, +, |, (, और )अभिव्यक्ति में इस्तेमाल किया जाना चाहिए।

मुझे लगता है कि यह अभिव्यक्ति में 118 पात्रों के साथ किया जा सकता है। क्या आप इसे कम कर सकते हैं?

नोट: यह चुनौती ओह्जेलमिंटिपुट्टा (फिनिश में) से है।


यदि !एक स्वीकृत चरित्र था, तो आप ^((?!KORONKORO).)*$19 बाइट्स के लिए कर सकते थे ।
मामा फन रोल

3
@MamaFunRoll मुझे लगता है कि अनुमति क्यों ! नहीं है।
एलेक्स ए

मुझे फिनिश साइट के आसपास अपने तरीके से काम करने की कोशिश करने का मज़ा मिला, और मुझे विश्वास है कि आप जो खोज रहे हैं वह सैद्धांतिक रीजैक्स अभिव्यक्तियाँ हैं जो इनपुट स्ट्रिंग से मेल खाती / अस्वीकार करती हैं। उदाहरण के लिए, साइट केवल वर्ण वर्ग के अंदर -और ^अंदर उपयोग करने की अनुमति देती प्रतीत होती है (इसलिए ^इसे लंगर के रूप में उपयोग नहीं किया जा सकता है), और एक मैच को केवल तभी गिना जाता है यदि पूरे स्ट्रिंग को रेगेक्स (अर्थात एक अंतर्निहित आसपास ^$, के रूप में) से मिलान किया जाता है सामान्य "रेगेक्स" के विपरीत जो मिलान के रूप में एक स्ट्रिंग को गिनता है यदि इसके किसी भी भाग को
रेक्सक्स से

जैसे मैंने अपना PCRE उत्तर हटा दिया है, जबकि इसे PHP में भी काम करना चाहिए, इस मामले में लगभग निश्चित रूप से अनपेक्षित है।
Sp3000

मैं यह कहना भूल गया कि यदि PHP PHP के ereg फ़ंक्शन द्वारा अभिव्यक्ति मान्य है, तो साइट जाँच करती है। यह चर्चा में कहा गया था कि ओहजेलमिंटिपुत्तका.नेट्स_केस्कुस्टेलु / ...
अतिथि

जवाबों:


6

204 अक्षर

(K((O(R(O(NKORO)*(NK(O(RK)?)?)?)?)?)?K)*(O(R(O(NKORO)*(N(K(O(RK?[^KO]|[^KR])|[^KO])|[^K])|[^KN])|[^KO])|[^KR])|[^KO])|[^K])*(K((O(R(O(NKORO)*(NK(O(RK)?)?)?)?)?)?K)*(O(R(O(NKORO)*(N(K(O(RK?)?)?)?)?)?)?)?)?

.*KORONKORKO.*एक परिमित राज्य मशीन में बदलकर , परिमित राज्य मशीन में बदलकर, और इसे एक रेगीक्स में बदल दिया गया।


यह सबसे अच्छा जवाब क्यों बन गया?
बैलिंट

1

अजगर, 77 79 97 118 बाइट्स

संपादन 3: फिर से लिखना। नेस्टेड लुकहीड्स का उपयोग करता है

^([^K]|K(?=$|[^O]|O(?=$|[^R]|R(?=$|[^O]|O(?=$|[^N]|N(?=$|[^K]|K(?=$|[^O]|O(?=$|[^R]|R(?=$|[^K]|K(?=$|[^O]))))))))))*$

रेगेक्स 101

संपादित 2: '$ |' रेगेक्स के दौरान। अब, यदि KORONKORKO के एक उपसर्ग का मिलान किया गया है, तो मिलान करने के लिए अगला आइटम एंड-ऑफ-स्ट्रिंग है, एक चरित्र जो उपसर्ग को समाप्त करता है, या एक ऐसा चरित्र जो उपसर्ग का विस्तार करता है यदि यह उपसर्ग को समाप्त करने वाली किसी चीज का पालन करता है।

यह रेगेक्स के साथ काम करता है re.fullmatch(), जिसे पायथन 3.4 में जोड़ा गया था। के साथ उपयोग करने के लिए re.match(), ^और $पैटर्न की शुरुआत और अंत में जोड़ने की आवश्यकता है, क्रमशः 2 बाइट्स के लिए।

([^K]|K($|[^O]|O($|[^R]|R($|[^O]|O($|[^N]|N($|[^K]|K($|[^O]|O($|[^R]|R($|[^K]|K($|[^O]))))))))))*

Regex101 लिंक

पिछला गलत समाधान (टिप्पणियां देखें):

K|([^K]|K([^O]|O([^R]|R([^O]|O([^N]|N([^K]|K([^O]|O([^R]|R([^K]|K[^O])))))))))*

संपादित करें: एकल K जोड़ा गया


2
मैं इस मैच पर विश्वास नहीं करता K
orlp

@orip - अच्छी पकड़। फिक्स्ड।
रूटट्वो

नवीनतम अपडेट अब के लिए विफल रहता हैKKORONKORKO
Sp3000

क्या यह ठीक है? कोई विचार?
रूटट्वो

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