Æ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 यह जेली में केवल तीन परमाणुओं में से एक है जो गैर-स्पष्ट तरीके से अतिभारित हैं।