शोर्टेस्ट टर्मिनेटिंग प्रोग्राम के फॉलोअप के रूप में जिसका आउटपुट साइज ग्राहम की संख्या से अधिक है और गोल्फ TREE (3) से कई गुना बड़ा है , मैं एक नई चुनौती पेश करता हूं।
लोडर की संख्या एक बहुत बड़ी संख्या है, यह समझाने के लिए कठिन है (क्योंकि यह एक लचीला लक्ष्य के साथ कोड गोल्फ अभ्यास का परिणाम था)। यहां एक परिभाषा और स्पष्टीकरण है , लेकिन आत्म-नियमन के प्रयोजनों के लिए, मैं बाद में इस पोस्ट में भी इसे समझाने का प्रयास करूंगा।
एल्गोरिथ्म राल्फ लोडर का उपयोग किसी भी (कम्प्यूटेशनल) एल्गोरिदम की सबसे बड़ी संख्या में से एक का उत्पादन किया जाता है! दरअसल, लोडर की संख्या गूगोलॉजी विकी पर सबसे बड़ी "कम्प्यूटेबल" संख्या है। ("कम्प्यूटेबल" संख्या से, उनका मतलब गणना के संदर्भ में परिभाषित संख्या से है।) इसका मतलब है कि यदि उत्तर एक दिलचस्प तरीके से लोडर की संख्या से अधिक संख्या का उत्पादन करता है (यानी सिर्फ लोडर की संख्या + 1 नहीं), तो आप नीचे जा सकते हैं। गूगोलॉजी का इतिहास! कहा जा रहा है, प्रोग्राम जो कुछ लोडर के नंबर + 1 की तरह का उत्पादन करते हैं हैं, निश्चित रूप से इस सवाल के वैध जवाब और दावेदार हैं; बस किसी भी प्रसिद्धि की उम्मीद नहीं है।
अपनी नौकरी एक समाप्त कार्यक्रम है कि एक नंबर का उत्पादन बनाने के लिए है बड़ा लोडर की संख्या की तुलना में। यह कोड-गोल्फ है , इसलिए सबसे छोटा कार्यक्रम जीतता है!
- आपको इनपुट लेने की अनुमति नहीं है।
- आपका कार्यक्रम अंततः नियत रूप से समाप्त होना चाहिए, लेकिन आप यह मान सकते हैं कि मशीन में अनंत स्मृति है।
- आप मान सकते हैं कि आपकी भाषा का नंबर प्रकार किसी भी परिमित मूल्य को पकड़ सकता है, लेकिन यह समझाने की आवश्यकता है कि यह आपकी भाषा में कैसे काम करता है (उदाहरण: क्या एक फ्लोट में अनंत सटीकता है?)
- इनफिनिटी को आउटपुट के रूप में अनुमति नहीं है।
- एक संख्या प्रकार का अंडरफ्लो एक अपवाद फेंकता है। यह चारों ओर नहीं लपेटता है।
- आपको इस बात की व्याख्या करने की आवश्यकता है कि आपका नंबर इतना बड़ा और आपके कोड का अनगुल्ड संस्करण यह जांचने के लिए है कि क्या आपका समाधान मान्य है (क्योंकि लोडर का नंबर स्टोर करने के लिए पर्याप्त मेमोरी वाला कोई कंप्यूटर नहीं है)।
तो यहाँ लोडर की संख्या का विवरण दिया गया है। देखें http://googology.wikia.com/wiki/Loader%27s_number और उसमें और अधिक सटीक जानकारी के लिए लिंक। विशेष रूप से, इसमें एक प्रोग्राम होता है जो लोडर की संख्या को बिल्कुल (परिभाषा के अनुसार) पैदा करता है।
निर्माणों की गणना अनिवार्य रूप से बहुत विशिष्ट गुणों के साथ एक प्रोग्रामिंग भाषा है।
सबसे पहले, प्रत्येक वाक्यविन्यास वैध कार्यक्रम समाप्त होता है। कोई अनंत छोर नहीं हैं। यह बहुत उपयोगी होगा, क्योंकि इसका मतलब है कि यदि हम निर्माण कार्यक्रम के एक अनियंत्रित कलन को चलाते हैं, तो हमारा कार्यक्रम अटक नहीं जाएगा। समस्या यह है कि इसका अर्थ है कि निर्माणों की गणना ट्यूरिंग पूर्ण नहीं है।
गैर-ट्यूरिंग पूर्ण भाषाओं में से दूसरा, यह सबसे शक्तिशाली में से एक है। अनिवार्य रूप से, यदि आप यह साबित कर सकते हैं कि एक ट्यूरिंग मशीन हर इनपुट पर रुकेगी, तो आप निर्माणों के कलन में एक फ़ंक्शन कर सकते हैं जो इसे अनुकरण करेगा। (यह पूरी तरह से ट्यूरिंग नहीं बनाता है, क्योंकि हॉल्ट ट्यूरिंग मशीनें हैं जिन्हें आप साबित नहीं कर सकते हैं कि वे हॉल्टिंग हैं।)
लोडर की संख्या अनिवार्य रूप से निर्माणों की गणना के लिए एक व्यस्त बीवर नंबर है, जो कि सभी coc प्रोग्राम के समाप्त होने के बाद से गणना करना संभव है।
विशेष रूप से, loader.c नामक फ़ंक्शन को परिभाषित करता है D
। लगभग, D(x)
सभी बिट-स्ट्रिंग्स से कम पर पुनरावृत्त करता हैx
, उन्हें एक coc कार्यक्रमों के रूप में व्याख्या करता है, वाक्यात्मक रूप से मान्य लोगों को चलाता है, और परिणामों को संक्षिप्त करता है (जो कि बिटस्ट्रिंग भी होगा)। यह यह संघटन लौटाता है।
लोडर की संख्या है D(D(D(D(D(99)))))
।
Googolology विकी से कोड की अधिक पठनीय प्रतिलिपि
int r, a;
P(y,x){return y- ~y<<x;}
Z(x){return r = x % 2 ? 0 : 1 + Z (x / 2 );}
L(x){return x/2 >> Z(x);}
S(v,y,c,t){
int f = L(t);
int x = r;
return f-2 ? f>2 ? f-v ? t-(f>v)*c : y : P(f,P(S(v,y,c,L(x)), S(v+2,t=S(4,13,-4,y),c,Z(x)))) : A(S(v,y,c,L(x)),S(v,y,c,Z(x)));
}
A(y,x){return L(y)-1 ? 5<<P(y,x) : S(4,x,4,Z(r));}
D(x)
{
int f;
int d;
int c=0;
int t=7;
int u=14;
while(x&&D(x-1),(x/=2)%2&&(1)){
d = L(L(D(x))),
f = L(r),
x = L(r),
c - r||(L(u)||L(r)-f||(x/=2)%2&&(u=S(4,d,4, r),t=A(t,d)),f/2&(x/=2)%2&&(c=P(d,c),t=S(4,13,-4,t),u=S(4,13,-4,u))),
c&&(x/=2)%2&&(t=P(~u&2|(x/=2)%2&&(u=1<<P(L(c),u)),P(L(c),t)),c=r)
u/2&(x/=2)%2&&(c=P(t,c),u=S(4,13,-4,t),t=9);
}
return a = P( P( t, P( u, P( x, c)) ),a);
}
main(){return D(D(D(D(D(99)))));}