-3 बाइट्स -1 बाइट थैंपेटबाय का धन्यवाद
-8 -9 बाइट्स नील को धन्यवाद।
f=(n,a=1,b=0,c=(a,b)=>b<n?c(a+b,a):b>n)=>c(a,b)?b+2<a?f(n,a-1,b+1):f(n,b-~a):[b,a]
इसे ऑनलाइन आज़माएं!
नोट: यह समाधान इस तथ्य पर निर्भर करता है कि कभी भी एकाधिक न्यूनतम समाधान नहीं होते हैं।
सबूत है कि वहाँ कभी नहीं कई समाधान हैं:
आज्ञा देना FIB(a,b,k)
क्रम से शुरू होने वाले फाइबोनैचि-जैसा है a,b
:
FIB(a,b,0) = a
FIB(a,b,1) = b
FIB(a,b,k) = FIB(a,b,k-1) + FIB(a,b,k-2)
लेम्मा 1
फाइबोनैचि-जैसे दृश्यों के बीच का अंतर स्वयं फाइबोनैचि-जैसा है, अर्थात FIB(a1,b1,k) - FIB(a0,b0,k) = FIB(a1-a0,b1-b0,k)
। इसका प्रमाण पाठक पर छोड़ दिया जाता है।
लेम्मा २
के लिए n >= 5
, एक समाधान a,b
मौजूद है संतोषजनक a+b < n
:
अगर n
है भी,FIB(0,n/2,3) = n
अगर n
यह अजीब है,FIB(1,(n-1)/2,3) = n
प्रमाण
n < 5
उन मामलों को जहां पूरी जांच की जा सकती है।
मान लीजिए कि हमारे लिए दो कम से कम समाधान है n >= 5
, a0,b0
और a1,b1
साथ a0 + b0 = a1 + b1
और a0 != a1
।
फिर ऐसे मौजूद k0,k1
हैं FIB(a0,b0,k0) = FIB(a1,b1,k1) = n
।
मामला एक: k0 = k1
WLOG मान b0 < b1
(और इसलिए a0 > a1
)
आज्ञा DIFF(k)
देना के बीच अंतर Fibonnaci तरह दृश्यों के साथ शुरू a1,b1
और a0,b0
:
DIFF(k) = FIB(a1,b1,k) - FIB(a0,b0,k) = FIB(a1-a0,b1-b0,k)
(लेम्मा 1)
DIFF(0) = a1 - a0 < 0
DIFF(1) = b1 - b0 > 0
DIFF(2) = (a1+b1) - (a0+b0) = 0
DIFF(3) = DIFF(1) + DIFF(2) = DIFF(1) > 0
DIFF(4) = DIFF(2) + DIFF(3) = DIFF(3) > 0
एक बार फिबोनेसी जैसे अनुक्रम में 2 सकारात्मक शब्द हैं, बाद के सभी शब्द सकारात्मक हैं।
इस प्रकार, केवल समय DIFF(k) = 0
कब है k = 2
, इसलिए एकमात्र विकल्प k0 = k1
है 2
।
इसलिये n = FIB(a0,b0,2) = a0 + b0 = a1 + b1
इन समाधानों की न्यूनतमता लेम्मा 2 का विरोध करती है।
केस 2 k0 != k1
::
डब्ल्यूएलओजी मान लेते हैं k0 < k1
।
हमारे पास है FIB(a1,b1,k1) = n
चलो a2 = FIB(a1,b1,k1-k0)
चलो b2 = FIB(a1,b1,k1-k0+1)
तब FIB(a2,b2,k0) = FIB(a1,b1,k1) = FIB(a0,b0,k0)
(पाठक के लिए व्यायाम)
चूंकि FIB(a1,b1,k)
यह गैर-नकारात्मक है k >= 0
, इसलिए यह गैर-घटती भी है।
यह हमें देता है a2 >= b1 > a0
और b2 >= a1+b1 = a0+b0
।
तो चलो DIFF(k) = FIB(a2,b2,k) - FIB(a0,b0,k) = FIB(a2-a0,b2-b0,k)
(Lemma 1)
DIFF(0) = a2 - a0 > 0
DIFF(1) = b2 - b0 >= (a0 + b0) - b0 = a0 >= 0
DIFF(2) = DIFF(0) + DIFF(1) >= DIFF(0) > 0
DIFF(3) = DIFF(1) + DIFF(2) >= DIFF(2) > 0
एक बार फिर, DIFF
2 सकारात्मक शब्द हैं और इसलिए बाद के सभी शब्द सकारात्मक हैं।
इस प्रकार, एकमात्र समय जब यह संभव DIFF(k) = 0
है k = 1
, इसलिए एकमात्र विकल्प k0
है 1
।
FIB(a0,b0,1) = n
b0 = n
यह लेम्मा 2 का विरोध करता है।
a>=0
औरa<b
क्या कभी कई समाधान हैं?