গণিত, 111 105 104 বাইট
r=Floor[(1+Sqrt[(4#-1)/3])/2]&;t=Limit[Pi(#/(3x)+1-x),x->r@#]&;p=r@#*Exp[I*t@#]&;Round@Abs[p@#-p@#2]==1&
ব্যাখ্যা:
r=Floor[(1+Sqrt[(4#-1)/3])/2]&
একটি ফাংশন সংজ্ঞায়িত করে r
যা ইনপুট নেয় #
এবং সেল 0-এ দূরত্ব (কোষের সংখ্যায়) গণনা করে each 3 (1 ^ 2 + 1), 18 = 3 (2 ^ 2 + 2), 36 = 3 (3 ^ 2 + 3), ... এবং সেই প্যাটার্নের সূত্রটি উল্টানো হচ্ছে। নোট করুন যে সেল 0 এর জন্য, এটি আসলে (1/2) + i * (স্কয়ার্ট (3) / 6) এর মেঝে নেয় , যা এটি 0 + 0 * i = 0 পাওয়ার জন্য উপাদান-ভিত্তিক গণনা করে ।
সঙ্গে r
সংজ্ঞায়িত r@#
কক্ষের জন্য রিং হয় #
(অন্য ফাংশনের সংজ্ঞা ভিতরে)। #+3r@#-3(r@#)^2&
কোডটিতে হুবহু উপস্থিত হয় না, তবে এটি একটি ঘরের সংখ্যা নেয় এবং পরবর্তী অভ্যন্তরীণ রিংয়ের মধ্যে একটি ঘরের সর্বাধিক সংখ্যাকে বিয়োগ করে, যাতে এটি এই প্রশ্নের উত্তর দেয় যে "বর্তমান রিংয়ের কোন ঘরটি এটি?" উদাহরণস্বরূপ, সেল 9 রিং 2 এর তৃতীয় ঘর, সুতরাং r[9]
2 #+3r@#-3(r@#)^2&[9]
আউটপুট হবে এবং 3 আউটপুট হবে।
অর্থাৎ উপরে এটি ব্যবহার এটি কি আমরা ফাংশন কি করতে পারেন মেরু কোণ থেকে ঘড়ির কাঁটার বিপরীতে কোণ "সেল 0, সেল 17, সেল 58" রশ্মি প্রশ্নে কক্ষের। প্রতিটি রিংয়ের সর্বশেষ ঘরটি সর্বদা পাই / 6 এ কোণে থাকে এবং আমরা পাই / (3 * রিং_নম্বার) এর ইনক্রিমেন্টে একটি রিং ঘুরে দেখি। সুতরাং, তাত্ত্বিকভাবে, আমাদের পাই / 6 + (যা_সেল_ও_কেন্দ্রিক_রং) * পাই / (3 * রিং_ নাম্বার) এর মতো কিছু গণনা করতে হবে। যাইহোক, ছবির ঘূর্ণন কোনও কিছুই প্রভাবিত করে না, তাই আমরা পাই / 6 অংশটি (6 বাইট সংরক্ষণ করতে) ফেলে দিতে পারি। এটি পূর্ববর্তী সূত্র এবং সরলকরণের সাথে একত্রিত করে আমরা পেয়েছিPi(#/(3r@#)+1-r@#)&
দুর্ভাগ্যক্রমে, এটি সেল 0 এর জন্য অপরিবর্তিত কারণ এর রিং নম্বর 0, সুতরাং আমাদের এটি প্রায় পাওয়া দরকার। একটি প্রাকৃতিক সমাধান কিছু হবে t=If[#==0,0,Pi(#/(3r@#)+1-r@#)]&
। তবে যেহেতু আমরা 0 কোষের কোণটির বিষয়ে চিন্তা করি না এবং কারণ r@#
এটি পুনরাবৃত্তি হয়, আমরা আসলে এখানে একটি বাইট সংরক্ষণ করতে পারিt=Limit[Pi(#/(3x)+1-x),x->r@#]&
এখন যে আমাদের কাছে রিং নম্বর এবং কোণ রয়েছে, আমরা একটি ঘরের অবস্থান (কেন্দ্র) আবিষ্কার করতে পারি যাতে আমরা সংলগ্নতার জন্য পরীক্ষা করতে পারি। আসল অবস্থান সন্ধান করা বিরক্তিকর কারণ রিংগুলি হেক্সাগোনাল, তবে আমরা কেবল বলাই করতে পারি যে রিংগুলি নিখুঁত চেনাশোনা হয় যাতে আমরা রিং নম্বরটিকে কোষের কেন্দ্রের দূরত্ব হিসাবে বিবেচনা করি This এটি সমস্যা হবে না যেহেতু কাছাকাছিটি খুব সুন্দর is বন্ধ। একটি জটিল সংখ্যার মেরু রূপ ব্যবহার করে , আমরা একটি সাধারণ ক্রিয়াকলাপ সহ জটিল প্লেনে এই আনুমানিক অবস্থানটি উপস্থাপন করতে পারি :p = r@#*Exp[I*t@#] &;
জটিল বিমানে দুটি জটিল সংখ্যার মধ্যকার দূরত্বটি তাদের পার্থক্যের নিখুঁত মান দ্বারা দেওয়া হয় এবং তারপরে আমরা আনুমানিক থেকে যে কোনও ত্রুটির যত্ন নিতে ফলাফলটি ঘুরতে পারি এবং এটি 1 এর সমান কিনা তা পরীক্ষা করতে পারি finally এই কাজের কি কোনও নাম নেই, তবে রয়েছে Round@Abs[p@#-p@#2]==1&
।
আপনি করতে পারেন অনলাইন এটা চেষ্টা মধ্যে উল্ফর্যাম ক্লাউড স্যান্ডবক্স নিচের মত কোড পেস্ট ক্লিক গিয়ার দ্বারা -> "সেল মূল্যায়ন" বা আঘাত করতে Shift + Enter বা নামপ্যাড লিখুন:
r=Floor[(1+Sqrt[(4#-1)/3])/2]&;t=Limit[Pi(#/(3x)+1-x),x->r@#]&;p=r@#*Exp[I*t@#]&;Round@Abs[p@#-p@#2]==1&[24,45]
বা সমস্ত পরীক্ষার ক্ষেত্রে:
r=Floor[(1+Sqrt[(4#-1)/3])/2]&;t=Limit[Pi(#/(3x)+1-x),x->r@#]&;p=r@#*Exp[I*t@#]&;Round@Abs[p@#-p@#2]==1&//MapThread[#,Transpose[{{0,1},{7,18},{8,22},{24,45},{40,64},{64,65},{6,57},{29,90},{21,38},{38,60},{40,63},{41,39},{40,40}}]]&