Divinacci Sequence


23

Divinacci ( OEIS )

फाइबोनैचि अनुक्रम निष्पादित करें, लेकिन उपयोग करने के बजाय:

f(n) = f(n-1)+f(n-2)

उपयोग:

f(n) = sum(divisors(f(n-1))) + sum(divisors(f(n-2)))

के इनपुट के लिए n, nth टर्म आउटपुट करें, आपके प्रोग्राम में केवल 1 इनपुट होना चाहिए।


पहले 14 शर्तें (0-अनुक्रमित, आप 1-सूचकांक; राज्य जो आपने उपयोग किया है):

0  | 0     # Initial               | []
1  | 1     # Initial               | [1] => 1
2  | 1     # [] + [1]              | [1] => 1
3  | 2     # [1] + [1]             | [1,2] => 3
4  | 4     # [1] + [1,2]           | [1,2,4] => 7
5  | 10    # [1,2] + [1,2,4]       | [1,2,5,10] => 18
6  | 25    # [1,2,4] + [1,2,5,10]  | [1,5,25] => 31
7  | 49    # [1,2,5,10] + [1,5,25] | [1,7,49] => 57
8  | 88    # [1,5,25] + [1,7,49]   | [1, 2, 4, 8, 11, 22, 44, 88] => 180
9  | 237   # [1,7,49] + [180]      | [1, 3, 79, 237] => 320
10 | 500   # [180] + [320]         | [1, 2, 4, 5, 10, 20, 25, 50, 100, 125, 250, 500] => 1092
11 | 1412  # [320] + [1092]        | [1, 2, 4, 353, 706, 1412] => 2478
12 | 3570  # [1092] + [2478]       | [1, 2, 3, 5, 6, 7, 10, 14, 15, 17, 21, 30, 34, 35, 42, 51, 70, 85, 102, 105, 119, 170, 210, 238, 255, 357, 510, 595, 714, 1190, 1785, 3570] => 10368
13 | 12846 # [2478] + [10368]      | [1, 2, 3, 6, 2141, 4282, 6423, 12846] => 25704
Etc...

आप यह चुन सकते हैं कि क्या प्रमुख को शामिल किया जाए या नहीं। 0. जो लोग करते हैं: इस चुनौती के उद्देश्य के लिए विभाजक 0हैं []

यह सबसे कम बाइट-काउंट जीत है ...


15
सभी प्राकृतिक संख्याएँ 0 विभाजित करती हैं , इस प्रकार इसकी भाजक राशि + 0 है ।
डेनिस

9
@ डेनिस आखिरकार कोई ऐसा नहीं है जो यह नहीं सोचता कि 1 + 2 + 3 + ... = -1/12।
लीक

1
@ डेनिस हम 0 से छुटकारा पा सकते हैं और इसे वैध बना सकते हैं: पी। या Infinityयदि आप चाहते हैं तो आप केवल एक गणितज्ञ उत्तर प्रस्तुत कर सकते हैं।
मैजिक ऑक्टोपस Urn

जेली का उत्तर छोटा होगा। : पी आप या तो अनुक्रम को बदल सकते हैं (उत्तर में शायद ट्विकिंग की भी आवश्यकता होगी) या इसके विवरण को बदल दें (आधार मान 0, 1, 1 के साथ शुरू करें )।
डेनिस

1
@carusocomputing यदि यह अनुक्रम नहीं बदलता है, तो यह उत्तरों को कैसे प्रभावित कर सकता है?
मार्टिन एंडर

जवाबों:


10

05AB1E , 9 बाइट्स

XÎFDŠ‚ÑOO

इसे ऑनलाइन आज़माएं!

व्याख्या

XÎ          # initialize stack with 1,0,input
  F         # input times do
   D        # duplicate
    Š       # move down 2 places on the stack
     ‚      # pair the top 2 elements on the stack
      Ñ     # compute divisors of each
       OO   # sum twice

हे पर जा रहा है स्वैपिंग के टन! दिलचस्प।
मैजिक ऑक्टोपस Urn

2
मुझे पसंद है कि कैसे अंतिम दो बाइट्स पाठक पर जबरदस्ती चिल्ला रहे हैं।
रोहन झुनझुनवाला

1
आपने इसे 2 मिनट के लोल द्वारा जीता।
मैजिक ऑक्टोपस Urn

8

गणितज्ञ, ४५ ४० बाइट्स

If[#<3,1,Tr@Divisors@#0[#-i]~Sum~{i,2}]&

मैथेमेटिका के विभाजक संबंधित कार्य Divisors, DivisorSumऔर n = 0 (ठीक है) के DivisorSigmaलिए सभी अपरिभाषित हैं , इसलिए हम इनपुट से समर्थन शुरू नहीं करते हैं ।f(1) = f(2) = 10

अनाम फ़ंक्शन का उपयोग करने के बजाय इसे ऑपरेटर के रूप में परिभाषित करना दो बाइट्स से अधिक लंबा लगता है:

±1=±2=1
±n_:=Sum[Tr@Divisors@±(n-i),{i,2}]

* 7 बाइट्स लंबे समय तक जब तक ±कि मैथेमेटिका समर्थित एन्कोडिंग में 1 बाइट न हो ।
कैलकुलेटर

@CalculatorFeline है। ( $CharacterEncodingविंडोज मशीनों के लिए डिफ़ॉल्ट सेटिंग है WindowsANSI, अर्थात् सीपी 1252।)
मार्टिन

1
जानकार अच्छा लगा। ।
कैलक्यूलेटरफिलीन




3

MATL, 16 15 बाइट्स

Oliq:",yZ\s]+]&

यह समाधान 0-आधारित अनुक्रमण का उपयोग करता है।

इसे MATL ऑनलाइन पर आज़माएं

व्याख्या

O        % Push the number literal 0 to the stack
l        % Push the number literal 1 to the stack
i        % Explicitly grab the input (n)
q        % Subtract 1
:        % Create the array [1...(n - 1)]
"        % For each element in this array...
  ,      % Do the following twice
    y    % Copy the stack element that is 1-deep
    Z\   % Compute the divisors
    s    % Sum the divisors
  ]      % End of do-twice loop
  +      % Add these two numbers together
]        % End of for loop
&        % Display the top stack element

3

जेली , 10 9 बाइट्स

ð,ÆDẎSð¡1

इसे ऑनलाइन आज़माएं!

डेनिस के लिए धन्यवाद -1।



@ डेनिस 0निहितार्थ था?
15

जब आप एसटीडीआईएन से पुनरावृत्तियों की संख्या लेते हैं, तो आपको एक निलाडिक श्रृंखला मिलती है, और 0 निलाडिक जंजीरों का निहितार्थ है।
डेनिस

@ डेनिस तो ¡और अन्य लोग हर जगह से एक तर्क लेने की कोशिश करेंगे, यहां तक ​​कि एक के साथ भी Ɠ? यह काफी अप्रत्याशित है ...
एरिक द आउटगलर

जब तक स्पष्ट रूप से निर्दिष्ट नहीं किया जाता है, ¡एट अल। अंतिम कमांड-लाइन तर्क लें और यदि कोई नहीं है, तो STDIN से एक पंक्ति पढ़ता है।
डेनिस





1

आर, 81 बाइट्स

f=function(n,a=1,b=1,d=numbers::divisors)`if`(n-1,f(n-1,b,sum(d(a))+sum(d(b))),a)

1-अनुक्रमित, और अनुक्रम की शुरुआत में 0 को बाहर करता है। उस शून्य ने मुझे लागू करने में बहुत परेशानी दी, क्योंकि बिल्टइन ने numbers::divisorsइसे अच्छी तरह से नहीं संभाला।

बाकी मानक पुनरावर्ती फ़ंक्शन का एक संशोधित संस्करण है जो रिट्रेसमेंट अनुक्रम को लागू करता है।

> f(1)
[1] 1
> f(2)
[1] 1
> f(3)
[1] 2
> f(5)
[1] 10
> f(13)
[1] 12846
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.