स्पष्टता के लिए जोड़े गए नए समाचार:
(a(:^)*(!()):#(}:(:)~^a((::*:**:*)*)~*(~*)*~(*)~^a*(*)*{)>(0)(!()){:^}(1)(){:^}(2)(:*){:^}(
3)(::**){:^}(4)(:*:*){:^}(5)(::*:**){:^}(6)(:*::**){:^}(7)(::*::***){:^}(8)(:*:*:*){:^}(9)(
::**::**){:^}R^^S):^
मैंने खुद को यह प्रतिबन्ध दिया कि इसे स्टैण्ड के शीर्ष के बजाय एसटीडीआईएन से पढ़ना चाहिए क्योंकि अंडरलोड उत्तर आमतौर पर होगा। मैंने उचित, दशमलव इनपुट का भी उपयोग किया, जो अधिकांश कोड बनाता है।
स्पष्टीकरण:
मैं एक क्वीन-रैपर में कार्यक्रम को लपेटता हूं: (a(:^)*और):^ । इसका मतलब है कि क्वीन रैपर के अंदर सभी कोड में स्टैक के निचले भाग में प्रोग्राम का सोर्स कोड होगा।
अंकों को एक सामान्य चर्च अंक में बदलने के लिए, मैं प्रत्येक अंक को कोड के साथ बदलकर 10 तक गुणा करने और उस अंक को जोड़ने की तकनीक का उपयोग करता हूं:
0 -> (::*:**:*)*
1 -> (::*:**:*)*(:)~*(*)*
2 -> (::*:**:*)*(::)~*(**)*
3 -> (::*:**:*)*(:::)~*(***)*
यहाँ बहुत दोहराव है, तो चलो इसे एक उपप्रोग्राम में पैकेज करें जो स्टैक के शीर्ष से एक चर्च अंक लेगा और इसका उपयोग "अंक स्ट्रिंग:" बनाने के लिए करेगा।
:(:)~^a((::*:**:*)*)~*(~*)*~(*)~^a*(*)*
मैंने इसे एक नए वातावरण में डाला ताकि इसे जल्दी से पहुँचा जा सके:
#(}:(:)~^a((::*:**:*)*)~*(~*)*~(*)~^a*(*)*{)>
अब मैं प्रतिस्थापन कोड बना सकता हूं R। Rबेटालड कोड के साथ स्टैडिन से एक स्ट्रिंग को बदलने के लिए लुकअप टेबल बनाने के लिए स्टैक के शीर्ष तत्वों का उपयोग करता है। यह इस तरह काम करता है:
()
(0)(code for 0)
(1)(code for 1)
(2)(code for 2)
...
R
हालाँकि, हम उन सबप्रोग्राम का उपयोग कर सकते हैं जो हमने कोड सेगमेंट बनाने के लिए किए थे:
(0)(!()){:^}
(1)(){:^}
(2)(:*){:^}
(3)(::**){:^}
...
जब Rचलाया जाता है, तो यह इनपुट को उपप्रोग्राम की एक श्रृंखला में बदल देगा जो एक चर्च अंक का निर्माण करेगा। जब इस उपप्रोग्राम को निष्पादित किया जाता है, तो यह उस स्टैक पर अगले तत्व पर चर्च का अंक बनाता है (0, जिसे पहले नीचे रखा गया था)। इसका मतलब यह है कि, इसके बाद R^, स्टैक पर शीर्ष मूल्य चर्च अंक होगा। फिर हम^ एक और समय मिलता है कि चर्च अंक को स्टैक में अंतिम तत्व (प्रोग्राम के सोर्स कोड) को लागू करने के लिए उत्तर प्राप्त करें।
मजेदार तथ्य: मैंने कई महीनों तक इस सबमिशन के लिए एमडी किया है। मैंने एक प्रश्न को गलत समझने के बाद इसे रखा था (जो मुझे अब और नहीं मिल सकता है)। मुझे इसे पोस्ट करने के लिए अपने रीसायकल बिन से खोदना पड़ा।