ازگر کی زبان میں فبونیکی نمبرز

Azgr Ky Zban My Fbwnyky Nmbrz



اگر 0 کو 1 میں شامل کیا جائے تو جواب 1 ہو گا۔ اگر جواب 1 اور اضافہ (ایجنڈ نہیں) کو ایک ساتھ جوڑا جائے تو نیا جواب 2 ہو گا۔ اگر یہ نیا جواب اور اس کا اضافہ ایک ساتھ کیا جائے تو جواب 3 ہوگا۔ اگر یہ نیا جواب اور اس کا اضافہ ایک ساتھ کیا جائے تو جواب 5 ہوگا۔

فبونیکی نمبرز ایک خاص ترتیب ہیں جہاں پہلی قدر کو 0 کے طور پر پہلے سے اعلان کیا جاتا ہے اور دوسری قدر کو 1 کے طور پر پہلے سے اعلان کیا جاتا ہے۔ باقی اعداد ان دونوں سے پچھلے دو نمبروں کو جوڑ کر تیار کیے جاتے ہیں۔ تمام فبونیکی نمبر مثبت عدد ہیں، جو 0 سے شروع ہوتے ہیں۔ پہلے بارہ فبونیکی نمبرز اور وہ کیسے حاصل کیے جاتے ہیں درج ذیل ہیں:

0
1
1 + 0 = 1
1 + 1 = 2
2 + 1 = 3
3 + 2 = 5
5 + 3 = 8
8 + 5 = 13
13 + 8 = 21
21 + 13 = 34
34 + 21 = 55
55 + 34 = 89







جمع کے اظہار کے بغیر، ان فبونیکی نمبروں کو مندرجہ ذیل ٹیبل میں رکھا جا سکتا ہے:



0 1 1 دو 3 5 8 13 اکیس 3. 4 55 89
0 1 دو 3 4 5 6 7 8 9 10 گیارہ

پہلی قطار میں فبونیکی نمبرز ہیں۔ دوسری قطار میں صفر پر مبنی اشاریہ جات ہیں، یہ فرض کرتے ہوئے کہ فبونیکی نمبر ایک صف میں ہیں۔



فبونیکی نمبر O(n) وقت اور O(1) وقت میں تیار کیے جا سکتے ہیں۔ اس وقت پیچیدگی کے اظہار میں، n کا مطلب ہے n مین آپریشنز، اور 1 کا مطلب ہے 1 مین آپریشن۔ O(n) کے ساتھ، n فبونیکی نمبرز تیار ہوتے ہیں، 0 سے شروع ہوتے ہیں۔ O(1) کے ساتھ، ایک فبونیکی نمبر متعلقہ انڈیکس سے تیار ہوتا ہے۔ یہی وجہ ہے کہ یہ n مین آپریشنز کے بجائے صرف ایک اہم آپریشن لیتا ہے۔





اس مضمون کا مقصد یہ بتانا ہے کہ Python کا استعمال کرتے ہوئے، کسی بھی طرح سے، فبونیکی نمبر کیسے تیار کیے جائیں۔

فبونیکی نمبر کا فارمولا

فبونیکی نمبر کی رسمی تعریف یہ ہے:



جہاں ایف n صفر پر مبنی n

O(n) وقت میں فبونیکی نمبر تیار کرنا

اگر n 1 ہے، تو صرف 0 فبونیکی نمبر کے طور پر پرنٹ کیا جائے گا۔ اگر n 2 ہے، تو اس ترتیب میں 0 اور 1 فبونیکی نمبرز کے طور پر پرنٹ کیے جائیں گے۔ اگر n 3 ہے، تو 0، 1، اور 1 اس ترتیب میں فبونیکی نمبرز کے طور پر پرنٹ کیے جائیں گے۔ اگر n 4 ہے، تو 0، 1، 1، اور 2 اس ترتیب میں فبونیکی نمبرز کے طور پر پرنٹ کیے جائیں گے۔ اگر n 5 ہے، تو 0، 1، 1، 2، اور 3 اس ترتیب میں، فبونیکی نمبرز کے طور پر پرنٹ کیے جائیں گے۔ اگر n 6 ہے، تو 0، 1، 1، 2، 3، اور 5 کو فبونیکی نمبرز کے طور پر پرنٹ کیا جائے گا، اس ترتیب میں – اور اسی طرح۔

پہلے n فبونیکی نمبرز بنانے کے لیے Python فنکشن یہ ہے:

ڈیف فبونیکی ( n ) :
arr = [ 0 ] * ( n )
arr [ 1 ] = 1
کے لیے میں میں رینج ( دو , n ) :
arr [ میں ] = arr [ میں - 1 ] + arr [ میں - دو ]
واپسی arr

یہ n عناصر کی ایک صف بنانے سے شروع ہوتا ہے، سبھی کو صفر پر شروع کیا جاتا ہے۔ اس صف میں فبونیکی نمبر ہوں گے۔ پہلا فبونیکی نمبر، 0، پہلے سے موجود ہے۔ دوسرا فبونیکی نمبر، 1، اگلے بیان (فنکشن میں) کے ذریعے تفویض کیا جاتا ہے۔ اس کے بعد فار لوپ ہے، جو انڈیکس 2 سے شروع ہو کر n سے بالکل پہلے ہوتا ہے۔ اس کا بیان ہے:

arr [ میں ] = arr [ میں - 1 ] + arr [ میں - دو ]

یہ فوری طور پر پچھلے دو نمبروں کو جوڑتا ہے۔

فنکشن کو کال کرنے اور پہلے بارہ فبونیکی نمبر پرنٹ کرنے کا کوڈ یہ ہو سکتا ہے:

N = 12
A = فبونیکی(N)
رینج میں i کے لیے (N):
پرنٹ (A[i]، end=')
پرنٹ کریں()

آؤٹ پٹ ہے:

0 1 1 دو 3 5 8 13 اکیس 3. 4 55 89

مستقل وقت میں ایک فبونیکی نمبر تیار کرنا

ایک ریاضیاتی فارمولا ہے جو صفر پر مبنی انڈیکس کو اس کے متعلقہ فبونیکی نمبر سے جوڑتا ہے۔ فارمولا ہے:

نوٹ کریں کہ مساوات کے دائیں طرف، یہ 5 کا مربع جڑ نہیں ہے جسے طاقت n تک بڑھایا جاتا ہے۔ یہ قوسین میں اظہار ہے جو پاور n تک اٹھایا جاتا ہے۔ اس طرح کے دو الفاظ ہیں۔

اگر n 0 ہے، تو Fibn 0 ہوگا۔ اگر n 1 ہے، Fib n 1 ہوگا۔ اگر n 2 ہے، Fib n 1 ہوگا۔ اگر n 3 ہے تو Fib n 2 ہوگا۔ اگر n 4 ہے، Fib n 3 ہو گا - اور اسی طرح. قاری اس فارمولے کی ریاضیاتی طور پر n کے لیے مختلف قدروں کو بدل کر اور تشخیص کر کے تصدیق کر سکتا ہے۔ n اس فارمولے میں ایک صفر پر مبنی انڈیکس ہے۔

اس فارمولے کے لیے ازگر کوڈ ہے:

ریاضی درآمد کریں۔

def fibNo ( n ) :
FibN = ( ( ( 1 +math.sqrt ( 5 ) ) / دو ) ** n - ( ( 1 -math.sqrt ( 5 ) ) / دو ) ** n ) / math.sqrt ( 5 )
واپسی فب این

ریاضی کا ماڈیول درآمد کیا گیا تھا۔ اس میں مربع جڑ کا فنکشن ہے۔ آپریٹر، ** پاور کے لیے استعمال ہوتا ہے۔ فنکشن fibNo() فارمولے کو براہ راست لاگو کرتا ہے۔ fibNo() فنکشن کے لیے ایک مناسب کال اور پرنٹنگ ہے:

N = 11
حق = fibNo(N)
پرنٹ (ریٹ)

آؤٹ پٹ ہے:

89.00000000000003

جواب سے غیر ضروری اعشاریہ ہندسوں کو ہٹانا ممکن ہے۔ تاہم، یہ کسی اور وقت کے لئے بحث ہے.

اگر مختلف n اشاریہ جات کے لیے مختلف فبونیکی نمبرز درکار ہیں، تو مختلف متعلقہ فبونیکی نمبرز کو واپس کرنے کے لیے ہر ایک n انڈیکس کے لیے فنکشن fibNo() کو ایک بار کال کرنا ہوگا۔ درج ذیل پروگرام صفر پر مبنی اشاریہ جات کے لیے ایسا کرتا ہے، 7 سے 9 (مشتمل):

ریاضی درآمد کریں۔

def fibNo ( n ) :
FibN = ( ( ( 1 +math.sqrt ( 5 ) ) / دو ) ** n - ( ( 1 -math.sqrt ( 5 ) ) / دو ) ** n ) / math.sqrt ( 5 )
واپسی فب این

کے لیے میں میں رینج ( 7 , 10 ) :
پرنٹ کریں ( fibNo ( میں ) , اختتام = '' )
پرنٹ کریں ( )

آؤٹ پٹ ہے:

13,000000000000002 21,000000000000004 34,00000000000001

نوٹ کریں جس طرح سے فار لوپ کو Python میں کوڈ کیا گیا ہے۔ پہلا انڈیکس 7 ہے۔ اگلا انڈیکس 8 ہے، اور آخری انڈیکس 9 ہے۔ 10 رینج آرگومینٹ میں 9 + 1 ہے۔ 10 کی پوزیشن میں قدر آخری صفر پر مبنی انڈیکس جمع 1 ہونی چاہیے۔ پہلا دلیل، 7، شروع صفر پر مبنی انڈیکس ہے۔

نتیجہ

فبونیکی نمبر پورے اعداد (مثبت عدد) کی ایک خاص ترتیب ہیں۔ یہ 0 سے شروع ہوتا ہے، اس کے بعد 1 غیر مشروط طور پر۔ باقی نمبرز کو وہاں سے فوری پچھلے دو نمبروں کو شامل کرکے تیار کیا جاتا ہے۔

پہلے n فبونیکی نمبرز حاصل کرنے کے لیے، 0 اور 1 کو پہلے دو کے طور پر قبول کریں، پھر باقی کے لیے، ایک بیان کے ساتھ فار لوپ استعمال کریں جیسے:

arr [ میں ] = arr [ میں - 1 ] + arr [ میں - دو ]

جو فوری طور پر پچھلے دو نمبروں کو جوڑتا ہے۔

صفر پر مبنی انڈیکس n سے صرف ایک فبونیکی نمبر حاصل کرنے کے لیے، فارمولہ استعمال کریں: