दिए गए तार से कितने मेस शुरू होते हैं?


11

यदि निम्न स्थितियाँ हैं तो एक मेसा स्ट्रिंग्स की एक गैर-रिक्त सूची को कॉल करें :

  1. प्रत्येक सूचीबद्ध स्ट्रिंग गैर-रिक्त है और केवल उन वर्णों का उपयोग करता है जो पहली स्ट्रिंग में होते हैं।
  2. प्रत्येक क्रमिक स्ट्रिंग पूर्ववर्ती स्ट्रिंग की तुलना में ठीक एक वर्ण लंबा है।
  3. सूची में कोई स्ट्रिंग सूची में किसी भी अन्य स्ट्रिंग की एक अनुवर्ती नहीं है।

शब्द "मेसा" इस तरह से कल्पना करने से है (जहाँ xs विभिन्न वर्ण हैं):

    xx..x
    xx..xx
    xx..xxx
    .
    .
    .
    xx..xxx..x 

एनबी: यह एक गणितीय तथ्य है कि केवल बहुत से मेस एक दिए गए स्ट्रिंग के साथ शुरू होते हैं। के बीच अंतर नोट किसी परिणाम बनाम -स्ट्रिंग ; उदाहरण के लिए, 'अन्न' 'केला' का परवर्ती (लेकिन प्रतिस्थापन नहीं) है।

चुनौती:

  • सबसे छोटा प्रोग्राम लिखें जो एक गैर-रिक्त अल्फ़ान्यूमेरिक इनपुट स्ट्रिंग लेता है और उस स्ट्रिंग से शुरू होने वाले मेस की संख्या को आउटपुट करता है।

इनपुट (स्टडिन):

  • कोई भी गैर-रिक्त अल्फ़ान्यूमेरिक स्ट्रिंग।

आउटपुट (स्टडआउट):

  • मेस की संख्या जो इनपुट स्ट्रिंग से शुरू होती है।

स्कोरिंग:

  • विजेता सबसे कम संख्या में बाइट्स वाला कार्यक्रम है।

उदाहरण मेस

केवल एक मेसा के साथ शुरू होता है a:

a

केवल एक मेसा के साथ शुरू होता है aa:

aa

कई मेस शुरू होते हैं ab:

ab        ab        ab        ab        (and so on)
          baa       aaa       bbb
                    bbba      bbaa
                              baaaa
                              aaaaaa

एक मेसा की विशिष्टता कैसे निर्धारित की जाती है? उदाहरण के लिए, मैं हो सकता था ab, bbbसिर्फ दूसरे कार्यकाल पर रोक कर एक मेसा के रूप में। क्या यह मान्य है? या क्या उन्हें हमेशा यथासंभव लंबे समय तक बनाया जाना चाहिए? इसके अलावा, अगर वहाँ के कई संभव rearrangements हैं nth(जैसे अवधि baa, aba, aab), कि वे अलग mesas के रूप में गिनी के साथ-साथ (बेशक वे सभी नियमों का पालन के उपलब्ध कराने के)?
मेलमोकब

@ मल्लमोकब - यदि वे किसी भी तरह से अलग हैं तो वे अलग-अलग मेस हैं। उदाहरण के लिए, ab, ab/baa, ab/bbb, ab/bbb/bbaa, ab/bbb/bbaa/baaaa, ab/bbb/bbaa/baaaa/aaaaaaविभिन्न mesas हैं।
रेस

@ ममलमोकब - आप अन्य अच्छे प्रश्न लाते हैं; उदाहरण के लिए, दी गई स्ट्रिंग से कितने अधिकतम लंबाई वाले मेस शुरू होते हैं, और वह अधिकतम लंबाई क्या है। इन प्रश्नों के अन्य संस्करण दिए गए आकार की एक वर्णमाला तय करेंगे (वर्णमाला का आकार इनपुट होगा), और सभी मेसस (स्थिति 1 के बिना पुन: परिभाषित) पर विचार करेंगे जो दिए गए वर्णमाला से केवल अक्षरों का उपयोग करते हैं - फिर से केवल बहुत कम हैं।
रेस

जवाबों:



2

रूबी, 142 अक्षर

m=->l{[*l[0].chars].repeated_permutation(l[-1].size+1).reduce(1){|s,x|l.any?{|y|x*''=~/#{[*y.chars]*'.*'}/}?s:s+m[l+[x*'']]}}
p m[[gets.chop]]

यह एल्गोरिथ्म रचनात्मक है, अर्थात यह इनपुट स्ट्रिंग के लिए सभी संभव मेस बनाता है और उन्हें गिनता है। यह कार्यक्रम को वास्तव में, वास्तव में धीमा बनाता है - लेकिन हे, यह कोडगोल्फ है।

उदाहरण चलता है:

> a
1
> aa
1
> ab
43

मैं उम्मीद कर रहा था कि लंबाई 3 (जैसे aab) के कुछ nontrivial बाइनरी स्ट्रिंग्स के साथ शुरू होने वाले सभी मेस संभव लंबाई के हैं, लेकिन मुझे यकीन नहीं है - आपका कार्यक्रम उस उदाहरण के लिए लगभग एक घंटे से चल रहा है। नायब: दो अलग-अलग अक्षरों से अधिक किसी भी इनपुट के लिए संभव आउटपुट नहीं होगा; उदाहरण के लिए, कुछ मेस abcजिनकी शुरुआत 7000 वें एकरमैन संख्या से अधिक है ।
रेस

मैंने C # में एक अनुकूलित संस्करण बनाया है, और जब मैंने 300,000प्रविष्टियां जनरेट कीं, तब aabभी मैं पहले 10 या तो सभी समान शब्द देख रहा था। इसलिए मुझे लगता है कि यह दो वर्णों से बड़ी चीज के लिए संभव नहीं है। कम से कम, कुछ बुद्धि और अनुमानवादी गणनाओं के बिना नहीं।
मेलमोकब
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.