ÆlÐĿĊḊi1
इसे ऑनलाइन आज़माएं! या सभी परीक्षण मामलों को सत्यापित करें ।
पृष्ठभूमि
हम इनपुट के प्राकृतिक लॉगरिदम और बाद के परिणामों को क्रमिक रूप से लेने से शुरू करते हैं जब तक कि परिणाम में परिवर्तन न हो। यह काम करता है क्योंकि जटिल तल पर प्राकृतिक लघुगणक के विस्तार का एक निश्चित बिंदु है ; if z = e -W (-1) = 0.318 + 1.337i - जहां W लैम्बर्ट डब्ल्यू फ़ंक्शन को दर्शाता है - हमारे पास लॉग (z) = z है ।
इनपुट एन के लिए , कंप्यूटिंग के बाद [एन, लॉग (एन), लॉग (लॉग (एन)),…, जेड] , हम सबसे पहले प्रत्येक परिणाम के लिए सीलिंग फ़ंक्शन लागू करते हैं। जेली का कार्यान्वयन ( Ċ) वास्तव में † के बजाय जटिल संख्या के काल्पनिक भाग की गणना करता है , लेकिन हम वैसे भी इन में रुचि नहीं रखते हैं।
एक बार कश्मीर वें के आवेदन लॉग एक मूल्य के कम पैदावार या इसके बराबर 1 , Ċवापस आ जाएगी 1 पहली बार के लिए। उस पहले 1 का 0-आधारित सूचकांक वांछित परिणाम है।
सीधा कार्यान्वयन (गणना 1-आधारित इंडेक्स, डिक्रिमेंट) एज केस 0 की वजह से विफल हो जाता है , जिसके लॉगरिदम की सूची में 1 नहीं है । वास्तव में, इनपुट 0 के लिए , लघुगणक का क्रम है
[0, None]
इसका कारण यह है कि जेली का लघुगणक ( Æl) अतिभारित है; यह पहले math.log(वास्तविक लघुगणक) की कोशिश करता है , फिर cmath.log(जटिल लघुगणक), और अंत में "देता है" और वापस लौटता है None। सौभाग्य से, Ċइसी तरह अतिभारित है और बस इसे तर्क देता है यदि यह गोल नहीं हो सकता है या काल्पनिक भाग नहीं ले सकता है।
इसी तरह, इनपुट 1 रिटर्न
[1, 0, None]
जो अन्य तरीकों में समस्याएँ पैदा कर सकता है जो इसमें शामिल होते हैं या शामिल नहीं होते हैं Ċ।
इस समस्या को ठीक करने का एक तरीका Ḋलॉगरिदम की सरणी के लिए लागू (dequeue; पहला तत्व निकालता है) है। यह नक्शे
0ÆlÐĿ -> [0, None] -> [None]
1ÆlÐĿ -> [1, 0, None] -> [0, None]
इसलिए न तो सूची में अब 1 है। इस तरह, पहले 1 के सूचकांक को खोजने पर 0 वापस आएगा (नहीं मिला), जो कि इनपुट 0 और 1 के लिए वांछित आउटपुट है ।
यह काम किस प्रकार करता है
ÆlÐĿĊḊi1 Main link. Argument: n (non-negative integer)
ÐĿ Apply the following link until the results are no longer unique.
Æl Natural logarithm.
Return the array of all unique results.
Ċ Round all resulting real numbers up to the nearest integer. This takes
the imaginary part of complex numbers and does nothing for non-numbers.
Ḋ Dequeue; remove the first item (n) of the array of results.
i1 Find the first index of 1 (0 if not found).
Of यह जेली में केवल तीन परमाणुओं में से एक है जो गैर-स्पष्ट तरीके से अतिभारित हैं।