जैसा कि हम जानते हैं, एक क्वीन एक प्रोग्राम है जो अपने स्वयं के सोर्स कोड को आउटपुट करता है। हालाँकि, ऐसा प्रोग्राम लिखना भी संभव है जो दूसरे प्रोग्राम को अलग करता है, जो पहले प्रोग्राम को फिर से आउटपुट करता है। उदाहरण के लिए, पायथन 2 कार्यक्रम
x = '''x = {}
print 'print '+'"'*3+x.format("'"*3+x+"'"*3)+'"'*3'''
print 'print '+'"'*3+x.format("'"*3+x+"'"*3)+'"'*3
जब चलाया जाएगा, तो निम्न पाठ का उत्पादन:
print """x = '''x = {}
print 'print '+'"'*3+x.format("'"*3+x+"'"*3)+'"'*3'''
print 'print '+'"'*3+x.format("'"*3+x+"'"*3)+'"'*3"""
जब पायथन प्रोग्राम के रूप में चलाया जाता है, तो यह मूल कोड को फिर से आउटपुट करेगा। इसे इटरेटिंग क्वीन कहा जाता है । क्योंकि मूल कोड को वापस पाने के लिए आपको इसे दो बार चलाना होगा, हम कहते हैं कि इसकी अवधि 2 है । लेकिन निश्चित रूप से, बहुत अधिक अवधि संभव है।
आपकी चुनौती यह है कि आप अपनी पसंद की भाषा में 100 बाइट्स या उससे कम की अवधि में एक लंबी अवधि के साथ एक पुनरावृत्ति वाली क्वीन लिखें । (ध्यान दें कि ऊपर दिया गया मेरा उदाहरण इस युक्ति के अनुकूल नहीं है, क्योंकि यह 119 बाइट्स है, जिसमें अनुगामी न्यूलाइन भी शामिल है।)
कृपया निम्नलिखित नियमों और स्पष्टीकरणों पर ध्यान दें:
- सामान्य रूप से लागू होने वाले नियम लागू होते हैं, अर्थात आपका प्रोग्राम उन भाषा सुविधाओं का उपयोग नहीं कर सकता है जो इसे सीधे अपने स्वयं के सोर्स कोड तक पहुंचने देती हैं।
- पुनरावृत्त आउटपुट को अंततः आपके मूल कोड पर वापस लूप करना पड़ता है, और आपको एक प्रदर्शन या प्रमाण शामिल करना होगा जो यह होगा।
- आपको यह भी शामिल करना चाहिए कि जब तक आप यह कहते हैं कि चक्र क्यों है। यह गणितीय प्रमाण के स्तर पर होना जरूरी नहीं है, लेकिन यह आपकी भाषा से परिचित किसी व्यक्ति के लिए होना चाहिए। (यह नियम यहां है क्योंकि मुझे कुछ, बहुत बड़ी संख्या में शामिल होने के जवाबों की उम्मीद है।)
- सटीक संख्या देने के बजाय "कम से कम 1,000,000 पुनरावृत्तियों" जैसा कुछ कहना ठीक है, जब तक आप यह साबित कर सकते हैं कि यह कम से कम इतना लंबा है। इस स्थिति में, आपका स्कोर 1,000,000 होगा। अन्यथा, आपका स्कोर आपकी रानी की अवधि है।
- 100 बाइट की सीमा केवल आपके प्रारंभिक कार्यक्रम पर लागू होती है - वे प्रोग्राम जो आउटपुट करते हैं वे अधिक लंबे हो सकते हैं, हालांकि निश्चित रूप से उन्हें आपके मूल कोड को आउटपुट करने के लिए अंततः 100 बाइट्स तक वापस जाना होगा।
- आप मान सकते हैं कि आपकी मशीन में अनंत रैम और अनंत रनटाइम है, लेकिन यदि आपकी भाषा उनके पास नहीं है, तो आप असीमित सटीक डेटा प्रकार (जैसे पूर्णांक) नहीं मान सकते। आप मान सकते हैं कि आपके पार्सर को संभालने वाले इनपुट की लंबाई की कोई सीमा नहीं है।
- सबसे ज्यादा अंक जीते।
कृपया ध्यान दें: एक मौजूदा चुनौती है जिसे क्विट व्हेनिंग कहा जाता है ; क्विनिंग शुरू करें जिसमें पुनरावृत्ति वाले क्वीन भी शामिल हैं। हालांकि, एक ही अवधारणा पर आधारित होने से अलग, ये पूरी तरह से विभिन्न प्रकार की चुनौती हैं। अन्य एक सीधे कोड गोल्फ है, जबकि यह एक (जानबूझकर!) वास्तव में एक व्यस्त बीवर समस्या है। इस प्रश्न का एक अच्छा उत्तर देने के लिए आवश्यक तकनीकों को दूसरे प्रश्न के उत्तर की आवश्यकता से बहुत भिन्न होने की संभावना है, और यह डिजाइन के साथ बहुत अधिक है।