ফিবোনাচি যখন কুইন্সের সাথে দেখা করেন


18

( চ্যাটটিতে আমার "দাবা" এবং "ফিবোনাচি" ট্যাগের এলোমেলো জোড়ায় হেল্কার প্রতিক্রিয়া দ্বারা অনুপ্রাণিত )


ফিবানচি

ফিবানচি সংখ্যার গণিত আরও সুপরিচিত সিকোয়েন্স, যেখানে প্রতিটি দুই নম্বর পূর্ববর্তী সংখ্যার একসঙ্গে যোগ করে গঠিত হয় এক। নীচে শূন্য-সূচকযুক্ত ক্রমের সংজ্ঞা দেওয়া হল:

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

ক্রম 0, 1, 1, 2, 3, 5, 8, 13, 21, ...( OEIS লিঙ্ক ) এ ফলাফল । এই চ্যালেঞ্জের মধ্যে আমরা কেবলমাত্র কঠোর-ইতিবাচক মানগুলিতে (তাই 1, 1, 2, 3, ...) মনোনিবেশ করব এবং আপনি শূন্য-সূচক বা এক-সূচক নির্বাচন করতে পারেন, তবে দয়া করে আপনার জমা দেওয়ার বিষয়টি উল্লেখ করুন।

ফাইবোনাচি নম্বরগুলি ক্রমান্বয়ে f(n)আকারের স্কোয়ারগুলি ব্যবহার করে এবং তাদের প্রান্তগুলি একসাথে সারিবদ্ধ করে বিমানটিকে টাইলিংয়ের জন্য ব্যবহার করা যেতে পারে । টাইলিংটি বর্তমান চৌকোটি থেকে "ডান-উপরে-বাম-ডাউন" প্যাটার্নে স্কোয়ার স্থাপন করে একটি পাল্টা-ঘড়ির কাঁটার ফ্যাশনে করা হয়। নীচের দিকে f(8)=21বর্গক্ষেত্রটি হাইলাইট করা সহ এই আংশিক টাইলিংয়ের একটি উদাহরণ নিম্নরূপ:
ফিবোনাচি স্কোয়ারস

আপনি দেখতে পারেন f(1)=1শুরু স্কয়্যার (নীল হাইলাইট করা), যেমন f(2)=1স্কোয়ারে স্থাপন ডান এটি, f(3)=2বর্গক্ষেত্র স্থাপন আপ সেখান থেকে f(4)=3বর্গক্ষেত্র স্থাপন বাম এবং তাই। পরবর্তী স্কোয়ারটি হবে f(9)=21+13=34এবং নীচে স্থাপন করা হবে। এই চ্যালেঞ্জটিতে আমরা ব্যবহার করব আংশিক টাইলিং পদ্ধতি।


রাণীরা

দাবা খেলার ক্ষেত্রে , সবচেয়ে শক্তিশালী টুকরাটি রানী কারণ এটি যে কোনও স্থানকে অনুভূমিকভাবে, উল্লম্বভাবে বা তির্যকভাবে স্থানান্তর করতে পারে। নীচের বোর্ডের চিত্রটিতে, একটি কালো বৃত্তযুক্ত স্কোয়ারগুলি দেখায় যেখানে রানী স্থানান্তর করতে পারে:
দাবাড়িতে রানী চলে

আমরা শব্দ সংজ্ঞায়িত করব কভারেজ হিসাবে

খালি বোর্ডে রানির নির্দিষ্ট অবস্থান এবং রানীর নিজস্ব শুরুর অবস্থান সহ মোট স্কোয়ারের সংখ্যা বনাম রানী যে স্কোয়ারের মোট সংখ্যা তুলনা করতে পারে তার শতাংশের পরিমাণ।

উদাহরণস্বরূপ উপরে সরানো, রানির কভারেজটি হ'ল 28/64 = 43.75%। রানী যদি উপরের-ডান h8চৌকোতে থাকে তবে কভারেজটি হবে 22/64 = 34.375%। রানী থাকলে e7কভারেজ হত 24/64 = 37.5%


চ্যালেঞ্জ

আমরা এই চ্যালেঞ্জের জন্য আমাদের দাবা বোর্ড হিসাবে উপরে প্রদর্শিত ফিলোনাচি টাইলিং ব্যবহার করতে যাচ্ছি। আপনাকে ইনপুট হিসাবে দুটি ধনাত্মক পূর্ণসংখ্যা দেওয়া হবে nএবং x:

  • nপ্রতিনিধিত্ব করে কত বড় টালি দ্বারা আচ্ছাদন নেই। উদাহরণটি tiling, সঙ্গে 21বাম বর্গাকার, আকারের একটি বোর্ড n = 8থেকে f(8) = 21(যখন শূন্য ইন্ডেক্স)।
  • xপ্রতিনিধিত্ব করে যা ফিবানচি স্কোয়ার রাণী (গুলি) বসানো জন্য ব্যবহার করা হয়, কভারেজ গণক জন্য। রাণীগুলি সেই নির্দিষ্ট ফিবোনাচি স্কোয়ার টাইলের প্রতিটি স্কোয়ারে একসাথে এক সময় স্থাপন করা হয় এবং মোট কভারেজটি পৃথক (অনন্য) কভারেজের সংমিশ্রণ।

উদাহরণস্বরূপ, এখানে একটি চিত্র n = 8(উপরের মতো একই টাইলিং) এবং x = 4( f(4) = 3বর্গক্ষেত্রের সাথে শেড নীল)। এই নয়টি নীল স্কোয়ারের প্রত্যেকটিতে এক-সময়ে-সময়ে রানিকে রেখে, রানীরা কমলা ছায়াযুক্ত প্রতিটি বর্গকে (সম্মিলিত) কভার করতে পারে। এই উদাহরণে মোট কভারেজ তাই 309/714 = 43.28%

এন = 8, এক্স = 4

বেশ স্পষ্টতই, যে কোনও সময় n = x, কভারেজটি হতে চলেছে 100%(উদাহরণস্বরূপ, সহ n=8এবং x=8, আপনি দেখতে পারেন যে পুরো বোর্ডের প্রতিটি বর্গটি কমপক্ষে একবারে coveredাকা হয়ে যাচ্ছে)। বিপরীতভাবে, উপযুক্তভাবে বড় nএবং x=1বা এর সাথে x=2, কভারেজটি পৌঁছতে চলেছে (তবে কখনও পৌঁছায় না) 0%(উদাহরণস্বরূপ, n=8এবং এর সাথে x=1, কভারেজটি একটি পোল্ট্রি 88/714 = 12.32%))

এই জাতীয় দুটি ইনপুট নম্বর দেওয়া, আপনি অবশ্যই কভারেজ শতাংশ, দুই দশমিক স্থানে সঠিক আউটপুট। আপনার কোডটি কীভাবে পরিচালনা করে তা উল্লেখ করুন।


বিধি

  • ইনপুট এবং আউটপুট যেকোন সুবিধাজনক বিন্যাসে দেওয়া যেতে পারে তবে দুটি দশমিক স্থানে অবশ্যই সঠিক হতে হবে। আপনার কোডটি কীভাবে পরিচালনা করে তা উল্লেখ করুন।
  • ধরুন অন্য কোনও টুকরো বোর্ডে নেই বা অন্যথায় চলাফেরায় হস্তক্ষেপ করবে না।
  • হয় একটি সম্পূর্ণ প্রোগ্রাম বা একটি ফাংশন গ্রহণযোগ্য। যদি কোনও ফাংশন হয় তবে আপনি আউটপুটটি মুদ্রণের পরিবর্তে ফিরিয়ে দিতে পারেন।
  • যদি সম্ভব হয় তবে দয়া করে একটি অনলাইন পরীক্ষার পরিবেশের একটি লিঙ্ক অন্তর্ভুক্ত করুন যাতে অন্য লোকেরা আপনার কোডটি চেষ্টা করে দেখতে পারে!
  • স্ট্যান্ডার্ড লুফোলগুলি নিষিদ্ধ।
  • এটি তাই সাধারণ গল্ফিংয়ের সমস্ত নিয়ম প্রয়োগ হয় এবং সংক্ষিপ্ততম কোড (বাইটে) জয়ী হয়।

উদাহরণ

n = 8, x = 4
43.28

n = 8, x = 8
100 or 100.00

n = 8, x = 1
12.32

n = 4, x = 1
66.67

n = 4, x = 2
60 or 60.00

n = 5, x = 3
75 or 75.00

n = 5, x = 1
47.5 or 47.50

আমার প্রোফাইল ছবিটি অর্ধ-প্রাসঙ্গিক
স্টিফেন

"ফিবোনাচি কুইনদের সাথে কখন দেখা করলেন"? নাকি "ফিবোনাচি কুইন্সের সাথে দেখা করেন"?
জোনাথন অ্যালান


@ জোনাথান অ্যালান শিরোনামটি যেমনটি ঠিক তেমন সঠিক। এটি বর্তমান সূচক কাল হিসাবে রয়েছে "এক্স এর সাথে সাথে এটি ঘটে।" "তুলনা করুন" যখন হেনরি স্যালির মধ্যাহ্নভোজের জন্য সাক্ষাত করেন, তারা সর্বদা হ্যামবার্গার খান।
অ্যাডমবর্কবার্ক 15

আহ, আপনার অর্থ "যখন ফিবোনাচি কুইনদের সাথে দেখা করেন ..."!
জোনাথন অ্যালান

উত্তর:


2

VB.NET, (.NET 4.5), 1238 1229 বাইট

-9 বাইটস @ টোটালিহিউম্যানকে ধন্যবাদ

Function A(n,x)
Dim g=New List(Of List(Of Long))
g.Add(New List(Of Long))
g(0).Add(1)
For i=2To n
Dim b=1
If i>2Then 
Dim w=0,y=1
b=w+y
For j=3To i
w=y
y=b
b=w+y
Next
End If
Select Case i Mod 4
Case 1
For j=1To b
Dim l=New List(Of Long)
For k=1To b
l.Add(i)
Next
g.Add(l)
Next
Case 2
For Each r In g
For j=1To b
r.Add(i)
Next
Next
Case 3
For j=1To b
g.Insert(0,New List(Of Long))
For k=1To b
g(0).Add(i)
Next
Next
Case 0
For Each r In g
For j=1To b
r.Insert(0,i)
Next
Next
End Select
Next
For i=0To g.Count-1
Dim c=g(i)
For j=0To c.Count-1
Dim e=c(j)
If e=x Then
For k=1To Math.Max(g.Count,g(0).Count)
If j-k>=0AndAlso c(j-k)<>x Then c(j-k)=0
If i-k>=0AndAlso g(i-k)(j)<>x Then g(i-k)(j)=0
If j+k<c.Count AndAlso c(j+k)<>x Then c(j+k)=0
If i+k<g.Count AndAlso g(i+k)(j)<>x Then g(i+k)(j)=0
If i-k>=0AndAlso j-k>=0AndAlso g(i-k)(j-k)<>x Then g(i-k)(j-k)=0
If i-k>=0AndAlso j+k<c.Count AndAlso g(i-k)(j+k)<>x Then g(i-k)(j+k)=0
If i+k<g.Count AndAlso j-k>=0AndAlso g(i+k)(j-k)<>x Then g(i+k)(j-k)=0
If i+k<g.Count AndAlso j+k<c.Count AndAlso g(i+k)(j+k)<>x Then g(i+k)(j+k)=0
Next
End If
Next
Next
Dim hits=0
For Each r In g
For Each c In r
If c=x Or c=0Then hits+=1
Next
Next
Return Math.Round(hits*100/(g.Count*g(0).Count),2)
End Function

সমস্যার বিবৃতি সিমুলেশন। আমি গ্রিড তৈরি করে বর্গের আকার বাড়ানোর জন্য প্রতিটি নতুন ফিবোনাচি নম্বর দিয়ে লুপিং দিয়ে শুরু করি। আমি প্রতিটি কক্ষে সূচকটি সঞ্চয় করি, যাতে পরবর্তী পদক্ষেপে রানীরা কোথায় যাবে তা সন্ধান করা সহজ।

তারপরে, আমি এমন প্রতিটি কক্ষ খুঁজে পাই যাতে তার মধ্যে একটি রানী থাকা উচিত এবং প্রতিটি হুমকির স্কোয়ারটি শূন্যের সাথে চিহ্নিত করুন mark রানীগুলি যেখানে রয়েছে সেগুলি আমি এড়িয়ে চলেছি যাতে আমাকে ব্যাকট্র্যাকিংয়ের বিষয়ে চিন্তা করতে না হয়।

শেষে, আমি সাফ হওয়া ঘরগুলি এবং রানীগুলির সাথে ঘরগুলি গণনা করি এবং তারপরে এটিকে স্পেসের মোট সংখ্যায় ভাগ করে। শতাংশ পেতে 100 দ্বারা গুণিত করুন এবং নিকটতম দুটি দশমিক স্থানে গোল করুন।


আপনি কি hitsসংক্ষিপ্ত পরিবর্তনশীল নামে পরিবর্তন করতে পারবেন না ? আমি ভিবি.এনইটি জানি না, তবে আমি ধরে নিচ্ছি যে এটি একটি পরিবর্তনশীল।
সম্পূর্ণরূপে

@ টোটালিহুমান হ্যাঁ, এটি সঠিক। আমি হাত দিয়ে গিয়েছিলাম এবং অবশ্যই সেটিকে মিস করেছি। ধন্যবাদ!
ব্রায়ান জে

2

পাইথন 2 , 524 499 বাইট

def Q(n,x):
 global w,h,f;f,R,L=0,range,len
 for d in R(n):s=x-1==d;f=f or[[s]];w=L(f[0]);W,H=R(w),R(L(f));exec"for j in "+("W:f.append([s]*w)","f:\n\tfor k in H:j.append(s)","W:f.insert(0,[s]*w)","f:\n\tfor k in H:j.insert(0,s)","f:0")[d%4-(d==0)]
 w,h=L(f[0]),L(f);l=0,1,-1
 for Y in R(h):
	for X in R(w):exec("""def F(u,v,x,y):
 while(u==v==0)==0<=x<w!=0<=y<h:f[y][x]=1+(f[y][x]!=1);x+=u;y+=v
for s in l:
 for t in l:F(s,t,X,Y)""","")[f[Y][X]!=1]
 q=w*h;return(q-sum(j.count(0)for j in f))*100./q

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

একটি ফাংশন সংজ্ঞায়িত করে যা টাইলিংয়ের আকার nএবং রানীর ফাইবোনাক্সি বর্গ সংখ্যা উভয়ই গ্রহণ করে x। আউটপুট শতাংশটি সুস্পষ্টভাবে দুটি দশমিক স্থানে বৃত্তাকার (ফুটারে, যেখানে সমস্ত আউটপুট সঞ্চালিত হচ্ছে)।

fবোর্ডটি সূচনা করা হচ্ছে এমন একটি দ্বি-মাত্রিক অ্যারে 0। তারপরে, ফিবোনাচি দাবা বোর্ডটি গণনা করা হয় এবং রানী যেখানে পশুর হবে সেগুলি দিয়ে জনবহুল হয়। তারপরে এই রানীগুলিকে সরানো যায় এমন প্রতিটি জায়গায় স্থানান্তরিত করা হয়; সমস্ত পজিশন পুরো বোর্ডের শতাংশ হিসাবে গণনা করা এবং মুদ্রিত হয়।


1

গণিত 11.1, 336 বাইট, 1-ভিত্তিক

R=Rectangle[#,+##]&;f=Fibonacci;o=Join@@Outer[##,1]&;r=RegionUnion;s=RegionMeasure;p[1]={0,0};p[i_]:=p[i-1]+{{-f@i,-f[i-2]},{0,-f@i},{f[i-1],0},{f[i-1]-f@i,f[i-1]}}[[i~Mod~4+1]];t[i_]:=r[R[p@#,f@#]&/@Range@i];k[n_,x_]:=Round[100s@RegionIntersection[r[R[#,f@x]&/@((#+p@x)&/@o[1##&,o[List,{-1,0,1},{-1,0,1}],Range[2f@n]])],t@i]/s@t@i,.01]

ব্যবহার: k[n, x]। মনোযোগ দিন যে ফাংশনটি 1-ভিত্তিক। রাউন্ডিং দ্বারা অর্জন করা হয়Round[100x,0.01]

মূলত, p[i]প্রতিটি বর্গক্ষেত্রের অবস্থান নির্ধারণের কাজ is এবং এলাকার উপরের স্তরের ফাংশন মত গণনা করা হয় RegionIntersection, RegionUnion,RegionMeasure

ফলাফল

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