यह 2016 के ARML प्रतियोगिता टीम प्रॉब्लम # 6 के भाग से प्रेरित था।
यहाँ चुनौती है:
आपको एक "वाइल्डकार्ड अनुक्रम" दिया जाता है, जो अंकों और एक अन्य चरित्र का एक क्रम है। एक स्ट्रिंग निम्नलिखित वाइल्डकोड द्वारा इस वाइल्डकार्ड अनुक्रम से मेल खाता है:
w = wildcard
s = string
# s matches w iff
for all 0 >= i > wildcard.length, w[i] == '?' or s[i] == w[i]
कहाँ पे '?' अपनी पसंद का एक चरित्र है।
Regex के संदर्भ में, बस कल्पना '?'होने के लिए '.'।
चुनौती सभी वर्ग संख्याओं को खोजने की है (आवश्यकता 1 मिलियन तक है) जिनके दशमलव स्ट्रिंग निरूपण इस वाइल्डकार्ड अनुक्रम से मेल खाते हैं। "वाइल्डकार्ड वर्ण" आपकी पसंद का कोई भी ASCII वर्ण हो सकता है, जब तक कि यह एक अंक नहीं है, जाहिर है।
उदाहरण के लिए, 4096से मेल खाता है 4**6और 4*9*लेकिन 4114या तो मेल नहीं खाता।
इनपुट
इनपुट को रेगेक्स से मेल खाते हुए सीक्वेंस के रूप में दिया जाएगा [0-9?]+। यह ASCII में एक स्ट्रिंग, एक कैरेक्टर ऐरे, या कैरेक्टर्स की बाइट सरणी हो सकती है।
उत्पादन
आउटपुट एक जो भी आप चाहते हैं-सीमांकित सूची / सेट / संख्याओं का सरणी है जो सही वर्ग हैं और वाइल्डकार्ड अनुक्रम से मेल खाते हैं।
मान्य इनपुट के उदाहरण:
1234567*90
1234567?90
1234567u90
['1', '2', '3', '4', '5', '6', '7', '*', '9', '0']
[49, 50, 51, 52, 53, 54, 55, 42, 57, 48]
[1, 2, 3, 4, 5, 6, 7, '*', 9, 0]
मान्य आउटपुट के उदाहरण:
[1, 4, 9]
1 4 9
1, 4, 9
1-4-9
आदि।
विशेष विवरण
- आप एक निश्चित सीमा में वर्गों की सूची खोजने के लिए बिल्डरों का उपयोग नहीं कर सकते हैं
- स्टैंडर्ड लोफॉल्स लागू होते हैं
- आपको 1 000 000 (1 मिलियन) तक का संचालन करने में सक्षम होना चाहिए
- यदि इनपुट के साथ प्रदान किया गया है
1******, तो प्रिंट करना सही है[1000000]। प्रिंट करना भी सही है[1000000, 1002001, 1004004, 1006009, 1008016, 1010025, ...] - वाइल्डकार्ड अनुक्रम वाइल्डकार्ड वर्ण से कभी शुरू नहीं होंगे; यही है, वे हमेशा एक ही लंबाई के तार का मिलान करेंगे।
परीक्षण के मामलों
4**6 -> [4096, 4356]
1**1 -> [1521, 1681]
1** -> [100, 121, 144, 169, 196]
9****9 -> [908209, 915849, 927369, 935089, 946729, 954529, 966289, 974169, 986049, 994009]
9*9*** -> [919681, 929296]
1**0* -> [10000, 10201, 10404, 10609, 12100, 14400, 16900, 19600]
9***4 -> [91204, 94864, 97344]
जीतना
14 फरवरी तक सबसे छोटा (वैध) (कार्यशील) सबमिशन, शुरुआती सबमिशन जीत से टाई-ब्रेक।
25एक वैध जवाब है ? ****2*
{4, "w", "w", 6}(या बेहतर अभी तक {4, w, w, 6}) की एक सरणी हो सकता है, वर्णों के एक सरणी के बजाय, जैसे {"4", "w", "w", "6"}?
?उत्तरदाता द्वारा चुना जाना है।