आइए एक विशिष्ट लूप पर नज़र डालें, जो आमतौर पर 8 पुनरावृत्तियों को पूरा करता है:
for (int x=0; x<8; ++x);
आपको इसे अनंत बनाना होगा!
यह सभी भाषाओं के लिए एक लोकप्रियता-प्रतियोगिता है जो for
लूप के ऐसे रूप का समर्थन करती है । तो उच्चतम स्कोर के साथ समाधान (घटा घटा नीचे) जीतता है।
यदि आपकी भाषा में for
लूप का दूसरा रूप है , लेकिन आप सुनिश्चित हैं, तो आप इसके साथ कुछ ठंडा कर सकते हैं, बेझिझक उत्तर पोस्ट कर सकते हैं और इसे नॉनकंपेटिंग के रूप में चिह्नित कर सकते हैं। मैं उपलब्ध कंस्ट्रक्शन और भाषाओं के दायरे को बढ़ाने का अधिकार सुरक्षित रखता हूं, लेकिन यह कभी भी सिकुड़ नहीं जाएगा, इसलिए सही समाधानों को छोड़ने से डरो मत।
समाधान क्या है?
समाधान में दो कार्यक्रम होते हैं ।
पहला कार्यक्रम स्वच्छ कार्यक्रम है। यह आपकी भाषा में विशिष्ट कार्यक्रम है for
जिसमें 8 पुनरावृत्तियाँ हैं। यह सामान्य कार्यक्रम होना चाहिए, कोई भी डेवलपर लिख सकता है। तैयारी के उद्देश्यों के लिए कोई विशेष हैक नहीं। उदाहरण के लिए:
int main()
{
for (int x=0; x<8; ++x);
return 0;
}
दूसरा कार्यक्रम संवर्धित है। इस कार्यक्रम में स्वच्छ कार्यक्रम और कुछ अतिरिक्त कोड से सभी कोड होने चाहिए। सीमित संख्या में विस्तार बिंदु हैं, विवरण के लिए पूर्ण नियम अनुभाग देखें। ऊपर दिए गए स्वच्छ के लिए एक संवर्धित कार्यक्रम हो सकता है
inline bool operator < (const int &a, const int &b)
{
return true;
}
int main()
{
for (int x=0; x<8; ++x);
return 0;
}
एक विचार दिखाने के लिए यह सिर्फ एक उदाहरण है (C ++ में noncompilable)। वास्तविक सही संवर्धित कार्यक्रम को संकलित करने, काम करने और अनंत लूप होने की आवश्यकता है।
पूरा नियम
दोनों कार्यक्रम:
- इस तरह के
for
छोरों के समर्थन के साथ कोई भी भाषा ठीक है। - लूप बॉडी को खाली होना पड़ता है। अधिक सटीक रूप से, आप कुछ आउटपुट या अन्य कोड को लूप में रख सकते हैं, लेकिन लूप का व्यवहार खाली लूप के मामले में समान होना चाहिए।
स्वच्छ कार्यक्रम:
लूप पूर्णांक या संख्यात्मक काउंटर का उपयोग करता है और 8 पुनरावृत्तियां करता है:
for (int x=0; x<8; ++x); // C, C++, C# for (var x=0; x<8; ++x); // C#, Javascript for (auto x=0; x<8; ++x); // C, C++ for (auto signed x=0; x<8; ++x); // C, C++ for (register int x=0; x<8; ++x); // C, C++
उपयोगकर्ता-परिभाषित प्रकार अस्वीकृत हैं।
- लूप वेरिएबल के बजाय प्रॉपर्टी (ग्लोबल वैरिएबल को छोड़कर) का इस्तेमाल करना बंद कर दिया गया है।
चर की घोषणा लूप के अंदर या बाहर हो सकती है। निम्नलिखित कोड ठीक है:
int x; for(x=0; x<8; ++x);
या तो उपसर्ग या उपसर्ग वृद्धि का उपयोग किया जा सकता है।
लूप की सीमा
8
को स्थिर या परिवर्तनीय नाम दिए बिना बचत के रूप में लिखा जाना चाहिए। इसे 8 के बराबर चर या स्थिर घोषित करने के आधार पर समाधान को रोकने के लिए बनाया गया है, और फिर इसे पुन: असाइन करना, ओवरराइड करना या इसे अन्य मूल्य से छाया देना है:const double n = 8; int main() { const double n = 9007199254740992; for (double x=0; x<n; ++x); return 0; }
संवर्धित कार्यक्रम:
- साफ एक से सभी कोड होना चाहिए।
- सीमित संख्या में विस्तार बिंदुओं में स्वच्छ कार्यक्रम का विस्तार करना चाहिए।
- एक ही
for
लूप को अनंत लूप के रूप में निष्पादित करना चाहिए ।
लूप को दूसरे अनंत निर्माण में रखना ठीक नहीं है। - कोड के रनटाइम या कंपाइल-टाइम पैचिंग की अनुमति दी जाती है, जब तक कि इसका शाब्दिक प्रतिनिधित्व अपरिवर्तित न हो।
- निर्माण को एक स्ट्रिंग में रखना और पास करना बंद
eval
कर दिया गया है।
विस्तार बिंदु:
- अन्य फ़ाइलों या अन्य विधानसभाओं सहित स्वच्छ कोड के साथ टुकड़े के बाहर कहीं भी।
for
बयान (एकल टुकड़े के रूप में -for
निर्माण और उसके शरीर) को अपरिवर्तित रखा जाना चाहिए।- परिवर्तनीय घोषणा को समान रखा जाना चाहिए।
- सरल कथनों के बीच के किसी भी स्थान को विस्तार बिंदु के रूप में इस्तेमाल किया जा सकता है।
- यदि और केवल तभी चर को लूप के बाहर घोषित किया गया था और मूल्य के तत्काल असाइनमेंट के बिना, ऐसे असाइनमेंट को जोड़ा जा सकता है।
/* extension point here */
int main()
/* extension point here */
{
/* extension point here */
int x /* extension point for assignment here */;
/* extension point here */
for (x=0; x<8; ++x);
/* extension point here */
return 0;
/* extension point here */
}
/* extension point here */
int main()
{
/* BEGIN: No changes allowed */ int x = 0; /* END */
/* extension point here */
/* BEGIN: No changes allowed */ for (x=0; x<8; ++x); /* END */
return 0;
}
पुनश्च: यदि संभव हो तो, ऑनलाइन आईडीई के लिए एक लिंक प्रदान करें।
java.lang.Integer
? 2. यह एक उचित जीत की कसौटी के साथ बेहतर होगा।