ফিবোনাকির মতো ক্রমের সর্বনিম্ন প্রাথমিক সংখ্যা


22

ধনাত্মক পূর্ণসংখ্যার ইনপুট এন দেওয়া হয়েছে , দুটি অ-নেতিবাচক সংখ্যার আউটপুট, a এবং b , যেখানে একটি <b , সর্বনিম্ন সম্ভাব্য গড় মান সহ ফলাফল করবে যা N সংখ্যাটি পুনরাবৃত্ত সম্পর্কের ক্রমের অংশ হয়ে যাবে:

f(0) = a
f(1) = b
f(n) = f(n-2)+f(n-1)

যদি একাধিক সমাধান থাকে যেখানে a এবং b এর গড় ন্যূনতম হয়, তবে আপনাকে সর্বনিম্ন দিয়ে আউটপুট করা উচিত ।

আপনার ধরে নেওয়া যায় যে এন আপনার ভাষা / সিস্টেমে প্রতিনিধির পরিসংখ্যানের মধ্যে রয়েছে।

পরীক্ষার মামলা

N = 1
a = 0, b = 1

N = 15
a = 0, b = 3

N = 21
a = 0, b = 1

N = 27
a = 0, b = 9   <- Tricky test case. [3, 7] is not optimal and [4, 3] is not valid

N = 100
a = 4, b = 10

N = 101
a = 1, b = 12

N = 102
a = 0, b = 3

N = 1000
a = 2, b = 10

যদি a>=0এবং a<bকখনও একাধিক সমাধান হয়?
জোনাথন অ্যালান

আমি গ্যারান্টি দিতে পারি না যে একাধিক সমাধান রয়েছে বা নেই। উভয়ই দিবে 1,4এবং 2,3দেবে 5এবং তাদের একই অর্থ রয়েছে। আমি অনুমান করি যে এটির মতোই মামলার সন্ধান পাওয়া সম্ভব, যেখানে এগুলি সর্বনিম্ন গড় মান। আপনি যদি দেখাতে / প্রমাণ করতে পারেন যে একাধিক সমাধান নেই তবে আপনার সেই শর্তটি পরীক্ষা করার দরকার নেই।
স্টিভি গ্রিফিন


3
নিম্নতম সম্ভাব্য গড় জন্য সম্পর্কিত OEIS ক্রম, A249783 , একটি বুনো চেহারা গ্রাফ রয়েছে
পিটার কেজি

1
@ আরজান জোহেনসেন আমি আমার উত্তরে একটি প্রমাণ যুক্ত করেছি যে কোনও সদৃশ সমাধান নেই (যেহেতু আমার উত্তর এটির উপর নির্ভরশীল)।
পিচবোর্ড_বক্স

উত্তর:


8

হুস্ক , 19 18 16 14 13 15 বাইট

জগারবকে 1 বাইট সংরক্ষণের জন্য ধন্যবাদ

ḟö£⁰ƒẊ++ÖΣṖ2Θḣ⁰

এটি অনলাইন চেষ্টা করুন!

ব্যাখ্যা:

দাবি অস্বীকার: আমি আসলে কোডটিরȯƒẊ++ ধারাটি বুঝতে পারি না ।

সম্পাদনা করুন: এটি হ্যাস্কেলতে অনুবাদ হয়েছে বলে মনে হচ্ছে fix.(mapad2(+).).(++), যেখানে mapad2তালিকার সমস্ত সংলগ্ন জোড়াগুলিতে ফাংশন প্রয়োগ করা হয়। (যদিও, হককে জানার, এই প্রোগ্রামটির প্রসঙ্গে এটি অন্যরকম কিছু বোঝাতে পারে)

            Θḣ⁰    Create the list [0..input]
          Ṗ2       Generate all possible sublists of length 2
        ÖΣ         Sort them on their sums
ḟ                  Find the first element that satisfies the following predicate.
    ƒẊ++             Given [a,b], magically generate the infinite Fibonacci-like
                     sequence from [a,b] without [a,b] at the start.
 ö£⁰                 Is the input in that list (given that it is in sorted order)?

Ö

আমি নিশ্চিত যে আমি চেষ্টা করেছিলাম ...
এইচপিউইজ

8

জাভাস্ক্রিপ্ট (নোড.জেএস) , 92 90 89 91 83 82 বাইট

-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)

লেমা ঘ

ফিবোনাকির মতো সিকোয়েন্সগুলির মধ্যে পার্থক্যটি হ'ল ফিবোনাকির মতো, অর্থাৎ FIB(a1,b1,k) - FIB(a0,b0,k) = FIB(a1-a0,b1-b0,k)। প্রমাণটি পাঠকের কাছে রেখে গেছে।

লেমা 2

কারণ 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

  • মামলা 1: k0 = k1

    ডাব্লুএলজি অনুমান 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 এর সাথে স্ববিরোধী।

  • কেস ২ 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)(লেমামা 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

    আবারও DIFF2 টি ইতিবাচক পদ রয়েছে এবং সুতরাং পরবর্তী সমস্ত পদ ইতিবাচক।

    সুতরাং, শুধুমাত্র সময় যখন এটা সম্ভব যে DIFF(k) = 0হয় k = 1, তাই শুধু পছন্দ k0হয় 1

    FIB(a0,b0,1) = n

    b0 = n

    এটি লেমাকে 2 এর বিপরীতে।




@ নীল যা হ্রাস করার bপরিবর্তে হ্রাস করে a+b, এবং এইভাবে আপনার সমাধান দেয় f(27) = [3,7]তবে সর্বোত্তম সমাধানটি f(27)=[0,9]। ব্রেকিং পরিবর্তনগুলি ফিরিয়ে নেওয়ার পরে আমরা 83 বাইটে নেমে আসছি।
কার্ডবোর্ড_বক্স

1
আমি মনে করি আপনি এর b-~aপরিবর্তে অন্য একটি বাইট সংরক্ষণ করতে পারেন a+b+1
নীল

1
আপনার দ্বিতীয় ক্ষেত্রে একটি ছোট ত্রুটি রয়েছে: a2 >= a1 + b1কখন ঠিক হয় না k1-k0=1। পরিবর্তে আপনি ব্যবহার করতে পারেন a2 >= b1 > a0এবং b2 >= a1+b1 = a0+b0, এবং তারপরে বাকীগুলি অনুসরণ করে।
janrjan জোহানসেন

8

হাস্কেল , 76 72 74 বাইট

সম্পাদনা করুন:

  • -4 বাইট: @ এইচপিউইজের /পরিবর্তে ব্যবহারের পরামর্শ দিয়েছিল div, যদিও এর জন্য ভগ্নাংশের সংখ্যা টাইপ ব্যবহার করা দরকার।
  • +2 বাইট: Enumযোগ করে রেঞ্জগুলির সাথে একটি বাগ স্থির করে -1

fএকটি মান Doubleবা Rationalটাইপ নেয় এবং এর একই পরিমাণ দেয়। Doubleচারদিকে ত্রুটি দেখা দেওয়ার পক্ষে যথেষ্ট পরিমাণে বড় নয় এমন সমস্ত মানের জন্য যথেষ্ট হওয়া উচিত, যখন Rationalতাত্ত্বিকভাবে সীমাহীন।

f n|let a?b=b==n||b<n&&b?(a+b)=[(a,s-a)|s<-[1..],a<-[0..s/2-1],a?(s-a)]!!0

এটি অনলাইন চেষ্টা করুন!(এইচ.পি.উইজ এর শিরোনাম সামঞ্জস্য ইনপুট / আউটপুট Rationalএর পূর্ণসংখ্যা বিন্যাসে)

কিভাবে এটা কাজ করে

  • ?এর সুযোগে স্থানীয়ভাবে নেস্টেড অপারেটর fa?bপুনরাবৃত্তভাবে ফিবোনাকির মতো সিক্যুয়েন্স দিয়ে শুরু a,bহওয়া অবধি শুরু হয় b>=n, Trueযদি ফিরে আসে তবে এটি হিট হয় n
  • তালিকা বোধগম্যতা:
    • sথেকে সমস্ত সংখ্যার মধ্য দিয়ে iterates 1ঊর্ধ্বমুখী, এর সমষ্টি প্রতিনিধিত্বমূলক aএবং b
    • aথেকে সংখ্যার মাধ্যমে পুনরাবৃত্তি 0করে s/2-1। (যদি sবিজোড় রাউন্ডের শেষটি বিজোড় হয় তবে))
    • a?(s-a)ক্রম a,s-aহিট দিয়ে শুরু হয় কিনা পরীক্ষা করে n। যদি তা হয় তবে তালিকার বোধগম্যতায় টিপল অন্তর্ভুক্ত রয়েছে (a,s-a)। (এটি b=s-a, যদিও নামকরণের পক্ষে এটি খুব কম ছিল))
    • !!0 বোধগম্যতায় প্রথম উপাদানটি (হিট) নির্বাচন করে।

8

এপিএল (ডায়ালগ) , 75 71 64 59 53 48 44 43 বাইট

@ অ্যাডমকে ধন্যবাদ 2 বাইট সংরক্ষণ করা হয়েছে

12 বাইট সংরক্ষিত হয়েছে @ জিএনজি ধন্যবাদ

o/⍨k∊¨+\∘⌽⍣{k≤⊃⍺}¨oa/⍨</¨a←,⍉|-21+k←⎕

এটি অনলাইন চেষ্টা করুন!

ব্যবহারসমূহ ⎕IO←0

কিভাবে? এটি বাস্তব বাদাম হয়ে গেছে।

k←⎕ - ইনপুট বরাদ্দ করুন k

⍳2⍴1+k←⎕- পরিসীমা কার্টিজিয়ান পণ্য 0থেকেk নিজেই সঙ্গে

|-\¨ - বাম থেকে প্রতিটি ডান জোড় উপাদানটি বিয়োগ করুন এবং পরম মান পাবেন

a←,⍉ - স্থানান্তর, সমতল এবং বরাদ্দ a

o←a/⍨</¨a - বাম উপাদানগুলি ডানদিকের চেয়ে ছোট যেখানে কেবল যুক্ত করুন এবং নির্ধারণ করুন o

oএখন সমস্ত a < bজোড়গুলির তালিকা রয়েছে যা তাদের পাটিগণিত গড় অনুসারে অর্ডার করা হয়েছে

+\∘⌽⍣{k≤⊃⍺}¨o- প্রতিটি জোড়ের জন্য o, kউচ্চতর মেয়াদ না পৌঁছানো পর্যন্ত ফিবোনাচি (পেয়ার এবং সিউসাম বিপরীত) প্রয়োগ করুন

k∊¨- তারপরে স্থির করুন কিনা kএটি শেষ শব্দটি (মানে এটি ক্রমটিতে অন্তর্ভুক্ত)

o/⍨- এবং oপূর্ববর্তী চেকটি যেখানে প্রযোজ্য সেখানে জোড়া রাখুন

- প্রথম ফলাফল ফিরে।


5

পাইথন 2 , 127 109 107 বাইট

-২ বাইট ধন্যবাদ ওভেসকে (এতে পরিবর্তন andকরা হচ্ছে *)

g=lambda x,a,b:a<=b<x and g(x,b,a+b)or b==x
f=lambda n,s=1,a=0:g(n,a,s-a)*(a,s-a)or f(n,s+(a==s),a%s+(a<s))

এটি অনলাইন চেষ্টা করুন!

কোন বোনাস পয়েন্ট n,a,s-a?

ব্যাখ্যা:

  • প্রথম লাইনটি একটি পুনরাবৃত্ত ল্যাম্বদা ঘোষণা করে g, যা ফিবোনাকির a, bক্রম হিসাবে প্রসারিত হবে কিনা তা যাচাই করে x। এটি যাচাই করে a <= b, প্রশ্নের অন্যতম মানদণ্ড। (এটি এমন কেসগুলিতে মঞ্জুরি দেবে যেখানে এই a == bক্ষেত্রে 0, aতবে ইতিমধ্যে আবিষ্কার এবং ফিরে পাওয়া যেত)।
    • শৃঙ্খলাবদ্ধ বৈষম্য a<=b<xএকবারে দুটি কার্যকর কাজ সম্পাদন করে: যাচাইকরণ a <= bএবং এটি b < x
    • তাহলে b < xউৎপাদনের True, ফাংশন ফিবানচি ক্রমানুসারে পরবর্তী দুটি সংখ্যার দিয়ে আবার নিজেই কল: b, a+b। এর অর্থ ফাংশনটি নতুন শর্তগুলি কার্যকর করা অবধি ...
    • যদি b < xফলন হয় False, তবে আমরা সেই পর্যায়ে পৌঁছেছি যেখানে আমাদের পরীক্ষা করা দরকার কিনা b==x। যদি তা হয় তবে এটি ফিরে আসবে True, ইঙ্গিত করে যে প্রাথমিক জুটি a, bশেষ পর্যন্ত পৌঁছে যাবে x। অন্যথায়, যদি b > x, জুটি অবৈধ।
  • দ্বিতীয় লাইনটি অন্য পুনরাবৃত্ত ল্যাম্বদা ঘোষণা করে f, যা একটি প্রদত্ত মানের সমাধান খুঁজে পায় n। এটি পুনরাবৃত্তভাবে নতুন প্রাথমিক জোড়া চেষ্টা করে a, b, অবধিg(n, a, b)ফলন করে True। এই সমাধানটি পরে ফেরত দেওয়া হয়।
    • ফাংশনটি পুনরাবৃত্তভাবে দুটি ভেরিয়েবল, s(প্রাথমিকভাবে 1) এবং a(প্রাথমিকভাবে 0) ব্যবহার করে প্রাথমিক ফিবোনাচি জুটি গণনা করে । প্রতিটি পুনরাবৃত্তির উপর, aবর্ধিত a, s-aহয় এবং প্রথম জোড়া হিসাবে ব্যবহৃত হয়। তবে, যখন aহিটs এটি 0 এ পুনরায় সেট করা হয় এবং sবৃদ্ধি হয়। এর অর্থ জোড়গুলি নিম্নলিখিত প্যাটার্নে গণনা করা হয়েছে:
      এস = 1 (0, 1) (1, 0)
      s = 2 (0, 2) (1, 1) (2, 0)
      s = 3 (0, 3) (1, 2), (2, 1), (3, 0)
      
      স্পষ্টতই, এটিতে কিছু অবৈধ জুড়ি রয়েছে, তবে এগুলি পাস করার সাথে সাথে তাত্ক্ষণিকভাবে বাদ দেওয়া হয় g(প্রথম বুলেট পয়েন্ট দেখুন)।
    • যখন মানগুলি aএবং sএটির মতো সন্ধান করা হয় g(n, a, s-a) == True, তখন এই মানটি ফেরত দেওয়া হয়। সম্ভাব্য সমাধানগুলি 'আকার' অনুসারে গণনা করা হয় (গড় অনুসারে সাজানো, তারপরে ন্যূনতম মান), চ্যালেঞ্জের অনুরোধ হিসাবে প্রথম সমাধানটি সর্বদা সবচেয়ে ছোট হবে।

3

আর , 183 বাইট 160 বাইট

n=scan();e=expand.grid(n:0,n:0);e=e[e[,2]>e[,1],];r=e[mapply(h<-function(n,a,b,r=a+b)switch(sign(n-r)+2,F,T,h(n,b,r)),n,e[,1],e[,2]),];r[which.min(rowSums(r)),]

এটি অনলাইন চেষ্টা করুন!

জিউসেপ্পিকে 23 বাইট বন্ধ করে গল্ফ করার জন্য ধন্যবাদ

কোড ব্যাখ্যা

n=scan()                        #STDIO input
e=expand.grid(n:0,n:0)          #full outer join of integer vector n to 0
e=e[e[,2]>e[,1],]               #filter so b > a
r=e[mapply(
  h<-function(n,a,b,r=a+b)switch(sign(n-r)+2,F,T,h(n,b,r)),
                                #create a named recursive function mid-call 
                                #(requires using <- vs = to denote local variable creation 
                                #rather than argument assignment
  n,e[,1],e[,2]),]              #map n, a and b to h() which returns a logical
                                #which is used to filter the possibilities
r[which.min(rowSums(r)),]       #calculate sum for each possibility, 
                                #get index of the minimum and return
                                #because each possibility has 2 values, the mean and 
                                #sum will sort identically.

1
160 বাইট - সাধারণভাবে, আপনি যেখানেই পারেন বাইটগুলি সংরক্ষণ করতে হবে, সুতরাং সুন্দর নামকরণের মাধ্যমে 4 বাইট সংরক্ষণ করা কেবল গ্রহণযোগ্য বা উত্সাহিত নয় তবে কিছুটা অর্থে কোড-গল্ফ দ্বারা প্রয়োজনীয় । তবুও, সুন্দর উত্তর, +1।
জিউসেপ


1

জেলি , 19 বাইট

ṫ-Sṭµ¡³e
0rŒcÇÐfSÐṂ

এটি অনলাইন চেষ্টা করুন!

-1 বাইট কার্ডবোর্ড_বক্স দ্বারা প্রমাণের জন্য ধন্যবাদ । যদি এটি অস্বীকৃত হয় তবে আপনি মোট 22 বাইটের জন্য দ্বিতীয় লাইনের শেষে যুক্ত করতে পারেন ।UṂṚ


... একটি অগ্রণী বৃদ্ধির @ স্টিভিগ্রিফিনের পর্যবেক্ষণ সমাধান করা উচিত।
জোনাথন অ্যালান


1
আমাদের কেবলমাত্র বীজটি আবিষ্কার করতে হবে যা ইনপুটটিকে x, সর্বশেষতম প্রদর্শিত হয়। তাহলে x সেটা একাধিক তৃতীয় সূচিতে পাওয়া তারপর, এটা কাজ করে 0,xএবং এর ফলে পারেন মুখে পড়তে কাজ করবে 1,(x-1)/2( xবিজোড়) অথবা 2,x/2-1( xএমনকি) যাহার ফলে xপরবর্তী ফলাফলে প্রদর্শিত হবে, যাতে ঘটতে অভ্যস্ত। পরবর্তী সংঘর্ষের জন্য তৃতীয় পদগুলি একই রকম হলেই গড়টি একই হতে পারে তবে প্রাথমিক শর্তাবলীর মধ্যে একটির অবশ্যই কম পার্থক্য থাকতে হবে (অন্যথায় তারা একই হবে) এবং তাই xপরবর্তী সূচীতে পাওয়া যাবে । এর মতো আমরা ṫ-Sṭµ¡i³¶ḶŒcÇÐṀচারটি বাইট সংরক্ষণ করতে পারি ।
জোনাথন অ্যালান

... উফ, প্লাস ইনক্রিমেন্ট:ṫ-Sṭµ¡i³¶‘ḶŒcÇÐṀ
জোনাথন অ্যালান

@ স্টিভি গ্রিফিন যখন আমি উত্তর দিয়েছিলাম তখন এই পরীক্ষার কেসটি উপস্থিত ছিল না: পি
এরিক দ্য আউটগোল্ফার

1

গল্ফস্ক্রিপ্ট - 88 77 বাইট

~:N[,{1+:a,{[.;a]}/}/][{[.~{.N<}{.@+}while\;N=]}/]{)1=\;},{(\;~+}$(\;);~~' '\

কার্ডবোর্ড_বক্সকে ধন্যবাদ, আমি একাধিক সমাধানের জন্য চেক করিনি!

ব্যাখ্যা

~:N                           # Reads input
[,{1+:a,{[.;a]}/}/]           # Creates an array of pairs [a b]
[{[.~{.N<}{.@+}while\;N=]}/]  # Compute solutions
{)1=\;},         # Pairs that are not solutions are discarded
{(\;~+}$         # Sorts by mean
(\;);~~' '\      # Formats output


0

ব্যাচ, 160 158 বাইট

@set/aa=b=0
:g
@if %a% geq %b% set/ab-=~a,a=0
@set/ac=a,d=b
:l
@if %c% lss %1 set/ad+=c,c=d-c&goto l
@if %c% gtr %1 set/aa+=1,b-=1&goto g
@echo %a% %b%

এটি (এছাড়াও) 3 7ইনপুট দেয় 27। সঠিক সমাধানটি হ'ল 0 9
পিচবোর্ড_বক্স

@ কার্ডবোর্ড_বক্স এখনও দেখতে পাচ্ছেন না যেখানে প্রশ্নটির প্রয়োজন আছে ...
নিল

প্রথম বাক্যে: "নিম্নতম সম্ভাব্য গড় মানের সাথে"।
পিচবোর্ড_বক্স

@ কার্ডবোর্ড_বক্স আহ, দুঃখিত, এটি উপেক্ষা করা খুব সহজ ছিল।
নীল

1
@ কার্ডবোর্ড_বক্স ঠিক আছে এখনই ঠিক করা উচিত।
নীল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.