आपका काम रेगेक्स को संकलित करना है ... रेगेक्स में प्रत्येक चरित्र के लिए एक प्रतिस्थापन निर्दिष्ट करके।
regexes
रेग्जेस इनका समर्थन करते हैं
REGEX = (LITERAL REGEX / GROUP REGEX / STAR REGEX / ALTERNATIVE)
LITERAL = 1 / 0
GROUP = '(' REGEX ')'
STAR = (LITERAL / GROUP) '*'
ALTERNATIVE = '('REGEX ('|' REGEX)*')'
केवल 1 या 0 ही क्यों? यह सरलीकरण के लिए है। इस प्रकार regex में केवल निम्न वर्ण हैं:
*()|10
इसकी व्याख्या इस प्रकार है:
*
क्लेन स्टार (बाएं समूह या शाब्दिक 0 या अधिक बार दोहराएं) है।|
प्रत्यावर्तन है (मिलान या तो बायीं ओर रेगीक्स या दायें मैचों के लिए रेग्क्स)।()
समूहीकरण कर रहा है।1
मैच चरित्र 1।0
मिलान वर्ण ०।
कैसे संकलित करें?
आप छह कोड स्निपेट निर्दिष्ट करते हैं: प्रत्येक रेगेक्स चरित्र को बदलने के लिए। उदाहरण के लिए, यदि आपका उत्तर है:
*
:FSAGFSDVADFS
|
:GSDGSAG
(
:GSDG
)
:GDSIH
1
:RGIHAIGH
0
:GIHEBN
फिर आप प्रत्येक रेगेक्स को उसके संबंधित कोड स्निपेट से बदल देते हैं, इसलिए:
(0|11)*
में बदल दिया गया है:
GSDGGIHEBNGSDGSAGRGIHAIGHRGIHAIGHGDSIHFSAGFSDVADFS
परिणामी कार्यक्रम क्या करने वाला है?
आपका कार्यक्रम होगा:
- इनपुट लें
- अगर रेक्सक्स पूरे इनपुट से मेल खाता है, तो एक सत्य मूल्य का उत्पादन करें।
- अतिरिक्त उत्पादन एक मिथ्या मूल्य है।
बाहर के इनपुट 01
को अनिर्धारित व्यवहार के रूप में माना जाता है। इनपुट खाली हो सकता है।
अतिरिक्त नियम
- किसी दिए गए रेगेक्स चरित्र के लिए, परिणामी स्निपेट हमेशा समान होनी चाहिए।
- इसके बाद कोई उपसर्ग या प्रत्यय नहीं जोड़ा जाता है।
- रेगेक्स को गैर-रिक्त होने की गारंटी है।
स्कोरिंग
सबसे कम संयुक्त स्निपेट विजेता है। तो उदाहरण के मामले के स्कोर की गणना इस प्रकार की जाएगी:
FSAGFSDVADFS
+ GSDGSAG
+ GSDG
+ GDSIH
+ RGIHAIGH
+GIHEBN
१२ + 42 + ४ + ५ + 6 + ६ = ४२