)K`0
"$+"+¶<`.+
$.(*__2*$-1*
इसे ऑनलाइन आज़माएं!
0-आधारित, इसलिए इनपुट n पहले n + 1 परिणाम देता है।
व्याख्या
OEIS से पुनरावृत्ति का उपयोग करता है:
a(n) = a(n-1) + 2*a(n-2) + 1
कार्यक्रम के माध्यम से चलते हैं:
)K`0
यह एक स्थिर चरण है: यह इनपुट को डिस्कनेक्ट करता है और कार्य स्ट्रिंग को 0
अनुक्रम के प्रारंभिक मूल्य पर सेट करता है। )
एक समूह में इस स्तर गिर्द घूमती है। वह समूह स्वयं कुछ नहीं करता है, लेकिन लगभग हर चरण (समूह चरणों सहित) एक लॉग में अपना परिणाम रिकॉर्ड करता है, और हमें 0
उस लॉग ऑन पर काम करने के लिए प्रोग्राम की दो प्रतियों की आवश्यकता होगी ।
"$+"+¶<`.+
$.(*__2*$-1*
यहां कॉन्फ़िगरेशन का एक गुच्छा है: "$+"+
मंच को लूप में लपेटता है। "$+"
एक प्रतिस्थापन के रूप में इलाज, और है $+
कार्यक्रम के इनपुट, यानी को संदर्भित करता है n । इसका मतलब है कि लूप को एन बार चलाया जाता है ।
फिर ¶<
एक आउटपुट चरण में प्रत्येक पुनरावृत्ति को लपेटता है, जो कि चरण के इनपुट को एक अनुगामी लाइनफीड के साथ प्रिंट करता है (इसलिए पहला पुनरावृत्ति शून्य को प्रिंट करता है, दूसरा पुनरावृत्ति पहले पुनरावृत्ति के परिणाम को प्रिंट करता है और इसी तरह)।
मंच ही अंतिम पंक्ति पर प्रतिस्थापन के साथ पूरे कामकाजी स्ट्रिंग को बदल देता है। यह पुनरावृत्ति ऑपरेटर के लिए एक अंतर्निहित समापन कोष्ठक और अंतर्निहित तर्क का उपयोग करता है *
, इसलिए यह वास्तव में इसके लिए छोटा है:
$.($&*__2*$-1*_)
कोष्ठक के अंदर के सामान को तीन भागों में विभाजित किया जा सकता है:
$&*_
: (n-1) _
s की एक स्ट्रिंग देता है ।
_
: एक देता है _
।
2*$-1*_
: 2 * a (n-1) की एक स्ट्रिंग देता है _
। $-1
यानी पिछले से पहले पाश यात्रा, परिणाम लॉग में अंत से पहले परिणाम को दर्शाता है। इसलिए हमें शुरू करने के लिए लॉग पर शून्य की प्रतियों की आवश्यकता थी, अन्यथा यह पहले पुनरावृत्ति पर कार्यक्रम के इनपुट को संदर्भित करेगा।
फिर $.(…)
परिणामस्वरूप स्ट्रिंग की लंबाई को मापता है। दूसरे शब्दों में, हमने a(n) = a(n-1) + 1 + 2*a(n-2)
यूरीरी के माध्यम से गणना की है (वास्तव में हालांकि: $.(…)
आलसी नहीं है और वास्तव में इसकी सामग्री का मूल्यांकन नहीं करता है यदि यह परिणामी लंबाई को सीधे अंकगणित के माध्यम से निर्धारित कर सकता है, तो यह काफी कुशल है)।
कार्यक्रम के अंत में रेटिना के अंतर्निहित आउटपुट के कारण अंतिम लूप पुनरावृत्ति ( अनुक्रम का n + 1 तत्व) मुद्रित होता है।