कल्पना कीजिए कि मेरे पास अनंत संख्या में होमवर्क की समस्याएं हैं (!) प्रत्येक को एक पूर्णांक संख्या दी गई है।
गणित समस्या अंक समस्या विनिर्देशक का उपयोग करके समस्या के सबसेट का वर्णन करने के लिए एक अंकन है।
एक MPN अभिव्यक्ति में कई चीजें शामिल हो सकती हैं:
- एक एकल मूल्य। यह संख्या वाले एक सेट का प्रतिनिधित्व करता है
99 -> {99}
:। - एक साधारण सीमा। यह सेट का प्रतिनिधित्व करता है जिसमें रेंज से लेकर अंत तक सभी संख्याएँ होती हैं
10~13 -> {10, 11, 12, 13}
:। यदि बाएं या दाएं किनारे गायब हैं, तो उन्हें क्रमशः माना जाता है -Infinity या Infinity~10 -> {x|x ≤ 10}
:;~ -> ℤ
। - एक MPN अभिव्यक्ति, उसके बाद "स्किप" और दूसरा MPN अभिव्यक्ति। यह दो सेटों के अंतर को दर्शाता है
10~20 skip 12~14 -> {10, 11, 15, 16, 17, 18, 19, 20}
:। - दो MPN भाव, एक अल्पविराम द्वारा अलग किए गए। यह दो सेटों के मिलन का प्रतिनिधित्व करता है
1,8~9,15~17 -> {1,8,9,15,16,17}
:।
"स्किप" ऑपरेटर अल्पविराम ऑपरेटर की तुलना में सख्त है, इसलिए 16,110~112 skip 16 -> {16,110,111,112}
(16 सेट में शामिल नहीं है {110,111,112}
, इसलिए 16 को छोड़कर कोई फर्क नहीं पड़ता।)
आप विघटन के लिए कोष्ठक में भी भाव डाल सकते हैं:
1~9 skip (2~8 skip (3~7 skip (4~6 skip 5))) -> {1,3,5,7,9}
यह व्याकरण है:
<expr> ::= "(" <expr> ")"
|| <number>
|| [<number>] "~" [<number>]
|| <expr> "skip" <expr>
|| <expr> "," <expr>
आपका कार्य एक प्रोग्राम लिखना है जो दो इनपुट लेता है:
- एक MPN अभिव्यक्ति
- एक संख्या
और MPN अभिव्यक्ति द्वारा वर्णित सेट में वह समस्या है या नहीं, इस पर निर्भर करते हुए कुछ सत्य या गलत मूल्य का आउटपुट देता है।
विशेष विवरण
- आप मान सकते हैं कि पहला इनपुट एक अच्छी तरह से बनाई गई MPN अभिव्यक्ति है (अर्थात यह उपरोक्त व्याकरण से मेल खाता है)
- एक MPN अभिव्यक्ति में संख्या हमेशा पूर्णांक होती है। वे नकारात्मक या शून्य हो सकते हैं, लेकिन कभी अंश नहीं होगा।
- यह कोड-गोल्फ है , इसलिए सबसे कम वैध जमा (बाइट्स में मापा गया) जीतता है।
- आप के लिए विभिन्न वर्णों का उपयोग कर सकते हैं
~
और,
, अगर आप चाहते हैं।
परीक्षण के मामलों
10~20 14 -> True
10~20 20 -> True
10~20 skip 14~18 17 -> False
~ skip 6 8 -> True
16,17 skip 16 16 -> True
(16,17) skip 16 16 -> False
~10,5~ 8 -> True
~10,5~ 4 -> True
6 skip 6,~ 6 -> True
~
और ,
, लेकिन के लिए नहीं skip
।
6 skip 6,~
जो मुझे विश्वास है कि मैंने सही तरीके से व्याख्या की है। अन्य 2 उत्तर अब तक इसे संतुष्ट नहीं करते हैं (फिर, मुझे लगता है कि मैं सही ढंग से व्याख्या कर रहा हूं)। अगर मुझे गलत लगा है तो कृपया इसे सही करें और स्पष्ट करें, लेकिन मेरी समझ से, यह कुछ भी मेल खाना चाहिए (यह एक सेट का संघ है जो एक सेट के साथ कुछ भी नहीं मैच करता है जो सब कुछ मेल खाता है)। ये इस प्रकार के मामले हैं जिनके बारे में मैं पहले बात कर रहा था कि मुझे लगता है कि हमारे समाधानों का परीक्षण करने में बहुत मदद मिल सकती है।