অঙ্কন Sierpinski ত্রিভুজ হয়েছে কাজ মৃত্যু । যদিও এটির সাথে আমরা আরও কিছু আকর্ষণীয় জিনিস করতে পারি। যদি আমরা ত্রিভুজটিতে যথেষ্ট পরিমাণে স্কুইন্ট করি তবে আমরা উল্টো ত্রিভুজগুলি একটি ফ্র্যাক্টাল গ্রাফের নোড হিসাবে দেখতে পারি। আসুন সেই গ্রাফের চারপাশে আমাদের পথটি খুঁজে বার করুন!
প্রথমে প্রতিটি নোডে একটি সংখ্যা নির্ধারণ করা যাক। বৃহত্তম উল্টো দিকের ত্রিভুজটি নোড শূন্য হবে এবং তারপরে আমরা কেবল স্তর দ্বারা নীচে নেমে যাব (প্রস্থ-প্রথম), ক্রমান্বয়ে উপরের-বাম-ডানদিকে ক্রমাগত সংখ্যা নির্ধারণ করে:
বৃহত্তর সংস্করণে ক্লিক করুন যেখানে ছোট সংখ্যাগুলি কিছুটা অস্পষ্ট।
(অবশ্যই, এই প্যাটার্ন নীল ত্রিভুজ ভিতরে সীমাহীনভাবে চলতে থাকে।) সংখ্যায়ন নির্ধারণ করতে আরেকটি উপায় কেন্দ্র নোড সূচক রয়েছে 0
, এবং নোড সন্তান i
(পরবর্তী-ছোট স্কেল সংলগ্ন ত্রিভুজ) সূচকের আছে 3i+1
, 3i+2
এবং 3i+3
।
এই গ্রাফের চারপাশে আমরা কীভাবে চলাফেরা করব? যে কোনও প্রদত্ত ত্রিভুজ থেকে কেউ নিতে পারে এমন ছয়টি প্রাকৃতিক পদক্ষেপ রয়েছে:
- যে কোনও একটি সর্বদা প্রান্তের মধ্যবিন্দু দিয়ে বর্তমান নোডের তিনটি সন্তানের একটিতে যেতে পারে। আমরা এই পদক্ষেপগুলি
N
,SW
এবং হিসাবে মনোনীত করবSE
। যেমন আমরা যদি নোড বর্তমানে করছি2
, এই নোড হতে হবে7
,8
,9
যথাক্রমে। প্রান্তগুলির মধ্য দিয়ে অন্যান্য পদক্ষেপগুলি (পরোক্ষ বংশধরদের কাছে) অনুমোদিত নয়। - তিনটি কোণগুলির মধ্যে একটিও সরে যেতে পারে তবে শর্ত থাকে যে এটি ত্রিভুজের কিনার স্পর্শ না করে প্রত্যক্ষ পিতামাতা বা দুটি পরোক্ষ পূর্বপুরুষের মধ্যে একটির কাছে। আমরা এই পদক্ষেপগুলি
S
,NE
এবং হিসাবে মনোনীত করবNW
। যেমন আমরা যদি নোড বর্তমানে করছি31
,S
নেতৃত্ব হবে10
,NE
অবৈধ হবে এবংNW
হতে হবে0
।
চ্যালেঞ্জ
দুই অ নেতিবাচক পূর্ণসংখ্যার দেওয়া x
এবং y
, থেকে সবচেয়ে কম পথ খুঁজে x
থেকে y
মাত্র ছয় প্যাচসমূহ উপরে বর্ণিত ব্যবহার করে,। যদি বেশ কয়েকটি সংক্ষিপ্ততম পাথ থাকে তবে তার মধ্যে যে কোনও একটিকে আউটপুট দিন।
মনে রাখবেন যে আপনার কোডটি উপরের চিত্রটিতে চিত্রিত 5 টি মাত্রার চেয়ে বেশি কাজের জন্য কাজ করা উচিত। আপনি এটা ধরে নিতে পারেন x, y < 1743392200
। এটি নিশ্চিত করে যে তারা 32-বিট স্বাক্ষরিত পূর্ণসংখ্যার মধ্যে ফিট করে। নোট করুন যে এটি গাছের 20 টি স্তরের সাথে মিলে যায়।
আপনার কোডটি অবশ্যই 5 সেকেন্ডেরও কম সময়ে কোনও বৈধ ইনপুট প্রক্রিয়া করবে । যদিও এটি একটি নিষ্ঠুর বাহুর প্রস্থের প্রথম সন্ধানের বিধি নিষেধ করে, এটি মোটামুটি আলগা বাধা হওয়া উচিত - আমার রেফারেন্স প্রয়োগকরণ অর্ধ সেকেন্ডে 1000 এর গভীরতার জন্য স্বেচ্ছাচারিত ইনপুট পরিচালনা করে (এটি নোডগুলির জন্য 480-অঙ্কের সংখ্যা)।
আপনি STDIN (অথবা নিকটতম বিকল্প), কমান্ড-লাইন আর্গুমেন্ট বা ফাংশন আর্গুমেন্টের মাধ্যমে ইনপুট নিয়ে কোনও প্রোগ্রাম বা ফাংশন লিখতে এবং STDOUT (বা নিকটতম বিকল্প), ফাংশন রিটার্ন মান বা ফাংশন (আউট) প্যারামিটারের মাধ্যমে ফলাফল আউটপুট করতে পারেন।
আউটপুট একটি ফ্ল্যাট, স্ট্রিং দ্ব্যর্থহীন তালিকা থাকা উচিত N
, S
, NE
, NW
, SE
, SW
, (স্পেস, linefeeds কমা, কোন যুক্তিসঙ্গত বিভাজক ব্যবহার ","
...)।
স্ট্যান্ডার্ড কোড-গল্ফ বিধি প্রযোজ্য।
পরীক্ষার মামলা
উপরের চিত্রটি ব্যবহার করে প্রথম কয়েকটি পরীক্ষার কেস হাতে নিয়ে কাজ করা যেতে পারে। অন্যরা নিশ্চিত করে যে উত্তরগুলি যথেষ্ট দক্ষ। তাদের জন্য, একই দৈর্ঘ্যের অন্যান্য সমাধান থাকতে পারে যা তালিকাভুক্ত নয়।
0 40 => N N N N
66 67 => S SW N N N
30 2 => NW NW -or- NE SW
93 2 => NE SW
120 61 => NW NW NW NW N SE SW N
1493682877 0 => S S NW NW
0 368460408 => SW SW N N SW SW SE SW SW N SE N N SW SW N SE SE
1371432130 1242824 => NW NW NE NW N SE SW SW SW SE SE SW N N N N SW
520174 1675046339 => NE NW NE NE SE SE SW SW N SE N SW N SW SE N N N N SE SE SW SW
312602548 940907702 => NE NW S SW N N SW SE SE SE SW SE N N SW SE SE SE SW
1238153746 1371016873 => NE NE NE SE N N SW N N SW N SE SE SW N SW N N SE N SE N
547211529 1386725128 => S S S NE NW N N SE N SW N SE SW SE SW N SE SE N SE SW SW N
1162261466 1743392199 => NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE SE SE SE SE SE SE SE SE SE SE SE SE SE SE SE SE SE SE SE