periodएक स्ट्रिंग की कम से कम गैर शून्य पारी ताकि स्वयं स्ट्रिंग से मेल खाता है, किसी भी हिस्से कि अधिकता अनदेखी है। उदाहरण के लिए, abcabcabअवधि है 3। कन्वेंशन से हम कहते हैं कि अगर ऐसी कोई बदलाव नहीं होता है, तो एक स्ट्रिंग की लंबाई के बराबर अवधि होती है। तो की अवधि abcdeहै 5और की अवधि aहै 1।
अधिक औपचारिक शब्दों में, एक स्ट्रिंग की अवधि Sन्यूनतम है i > 0ताकि S[1,n-i] == S[i+1,n](से अनुक्रमण 1) हो।
दो लंबाई की शक्ति के दिए गए स्ट्रिंग एस के लिए, हम दो लंबाई की शक्ति के सभी उपसर्गों की अवधि की गणना करेंगे। उदाहरण के लिए, विचार करें S = abcabcab। हम जिन काल की गणना करेंगे वे हैं:
'a', 1
'ab', 2
'abca', 3
'abcabcab', 3
हम वास्तव में सिर्फ पीरियड्स के एरे को आउटपुट करेंगे, जो कि है [1, 2, 3, 3]।
दो की दी गई सकारात्मक शक्ति के लिए n, सभी संभव बाइनरी स्ट्रिंग्स पर विचार करें S। याद रखें कि एक बाइनरी स्ट्रिंग बस 1एस और 0एस का एक स्ट्रिंग है, इसलिए बिल्कुल 2^nऐसे तार हैं (जो कि 2शक्ति के लिए है n)। हर एक के लिए हम इस अवधि की गणना कर सकते हैं।
चुनौती कोड लिखने की है जो
nइनपुट के रूप में (दो की शक्ति) लेता है और गणना करता है कि इस तरह के कितने अलग-अलग सरणियाँ हैं।
इसके उत्तर n = 1, 2, 4, 8, 16, 32, 64, 128हैं:
1, 2, 6, 32, 320, 6025, 216854, 15128807
के लिए अलग-अलग अवधि सरणियों का पूरा सेट n = 4है:
1, 1, 1
1, 1, 3
1, 1, 4
1, 2, 2
1, 2, 3
1, 2, 4
स्कोर
मैं 10 मिनट तक उबंटू चलाने वाले कंप्यूटर पर आपका कोड चलाऊंगा। आपका स्कोर सबसे बड़ा nहै जिसके लिए आपका कोड उस समय समाप्त हो जाता है। एक टाई के मामले में, जो उत्तर संयुक्त सबसे बड़ी सबसे nतेज जीत है। इस मामले में कि समय पर 1 सेकंड के भीतर एक टाई है, पहला जवाब पोस्ट जीतता है।
भाषाएं और पुस्तकालय
आप अपनी पसंद की किसी भी उपलब्ध भाषा और लाइब्रेरी का उपयोग कर सकते हैं। यदि संभव हो तो लिनक्स में अपना कोड कैसे चलाएं / संकलित करें, इसके लिए एक पूर्ण विवरण शामिल करें। `
आपके कोड को वास्तव में उत्तरों की गणना करनी चाहिए और उदाहरण के लिए, केवल पूर्व-निर्मित मानों का उत्पादन करना चाहिए।
अग्रणी प्रविष्टियाँ
- 2 मिनट और 21 सेकंड के लिए एन = 128 में सी # पीटर टेलर द्वारा
- 9 सेकंड में n = 32 के लिए जंग में isaacg द्वारा
n, तो क्या आप इसे स्वीकार करेंगे? यह अच्छी तरह से परिभाषित नहीं है कि हार्डकोडिंग और वास्तविक कंप्यूटिंग के बीच की सीमा कहां है।
abcab। सभी लेकिन पिछले 3 अक्षरों है abcab। ये मिलान, और कम संख्या में अक्षरों को हटाने से मेल नहीं खाता।