अनुक्रमों की गणना करने के लिए पुनरावृत्ति का उपयोग करना
आमतौर पर, OEIS अनुक्रम चुनौती को हल करने के लिए इसके पृष्ठ पर दिए गए किसी एक सूत्र का उपयोग करना होगा। इनमें से कुछ J के लिए अच्छी तरह से अनुकूल हैं, और अन्य इतने पर नहीं। पुनरावर्ती सूत्र सीधे-आगे हैं, हालांकि, पुनरावृत्ति सरल नहीं हो सकती है। एक पैटर्न जिसका मैंने उपयोग करना शुरू किया है, वह है
(s(]f)^:[~]) n
] Gets n
s The first value in the sequence
~ Commute the argument order, n is LHS and s is RHS
[ Gets n
^: Nest n times with an initial argument s
(]f) Compute f s
Returns (f^n) s
कहा पे s
अनुक्रम में पहला मूल्य है, f
एक क्रिया है जो पिछले शब्द को दिए गए अगले शब्द की गणना करेगा, और n
उस शब्द का शून्य-आधारित सूचकांक है जिसे आप गणना करना चाहते हैं। यह विधि इस तथ्य पर निर्भर करती है कि जब एक डाईएड की शक्ति की गणना की जाती है, तो एलएचएस एक नए मोनाड बनाने के लिए डेड के लिए बाध्य होता है, और यह कि मोनाड प्रारंभिक मूल्य पर नेस्टेड है। पावर अडवरब को दिया जाने वाला रंग एक हुक है जहां एलएचएस पर (]f)
सूचकांक n
और अनुक्रम में एक शब्द का मूल्य दिया जाता है s
। हुक लागू होगी f
पर s
एक इकाई के रूप में, और उसके बाद की उपेक्षा n
का परिणाम वापस जाने के लिए f s
।
मानक पुस्तकालय
कभी-कभी, आप पा सकते हैं कि J को अपने मानक पुस्तकालय में एक क्रिया के लिए समर्थन मिलेगा । उदाहरण के लिए, अधिकांश बिटवाइज़ पूर्णांक ऑपरेशन उन नामों से बंधे होते हैं जो कि आदिम कॉल का उपयोग करने से कम होते हैं।
AND =: (17 b.) NB. it is actually '$:/ :(17 b.)'
दिनांक और समय के आधार भी उपलब्ध हैं।
सीमाओं
यदि आपके पास मानों का एक सेट है [a, b, c]
और आप उनके उत्पाद के आधार पर एक सीमा बनाना चाहते हैं [0, 1, 2, ..., a*b*c-1]
, जैसे कि विशिष्ट दृष्टिकोण उनके उत्पाद को खोजने के लिए होगा और फिर एक सीमा बनाई जाएगी, [:i.*/
जिसकी लागत 6 बाइट्स हो सकती है । एक छोटा रास्ता ,@i.
4 बाइट्स के लिए है क्योंकि i.
अभी भी गिनती करते समय बहुआयामी सरणियों का निर्माण कर सकता है, और इसे समतल करते हुए एक समतुल्य श्रेणी का उत्पादन करेगा।
लगातार मुद्रण
मूल्य छापने का एक मौन तरीका और स्पष्ट लूप के बिना इसका उपयोग जारी रखना है ([echo)
एक मौद्रिक मामले के लिए है। echo
मानक पुस्तकालय में एक क्रिया है जो अपनी सामग्री को stdout
दुभाषिया में उपयोग किए गए प्रारूप में प्रिंट करता है। हुक फिर एक ही इनपुट मान छोड़ देता है बाईं [
क्रिया का उपयोग करके ।
पूर्णांक के आधार 10 अंक
एक पूर्णांक के आधार 10 अंकों को प्राप्त करने का मानक तरीका है 10#.inv]
जिसकी लागत 8 बाइट्स है, बहुत अधिक है! एक विकल्प इसे एक स्ट्रिंग में परिवर्तित करना है और इसे रैंक 0 पर पार्स करना है "."0@":
जो एक बाइट बचाता है, लेकिन एक और भी बेहतर तरीका है ,.&.":
जो 8 के बजाय अंतिम बाइट 6 बाइट्स बनाने वाला एक और बाइट बचाता है।
GolfScript gets its own way far too often
2019 में पढ़ने के बारे में कुछ मजेदार है।