এই প্রশ্নের দ্বারা অনুপ্রাণিত
2D চিত্রটিকে 1D স্ট্রিংয়ে আনরোল করার আর একটি উপায় হিলবার্ট কার্ভ ব্যবহার করা ।
এই বক্ররেখার অনেকগুলি সংস্করণ রয়েছে, এটি গণনা করার সময় ব্যবহৃত পুনরাবৃত্তির সংখ্যার উপর নির্ভর করে। নীচে প্রথম অর্ডার থেকে পঞ্চম ক্রম পর্যন্ত হিলবার্ট কার্ভের উদাহরণ অনুসরণ করুন।
এই বক্ররেখার গণনা করার পদ্ধতিটি নিম্নলিখিত। প্রথমে আমরা প্রথম অর্ডার হিলবার্ট কার্ভকে চিত্রের মতো দেখানো (n = 1 এর জন্য একটি) হিসাবে সংজ্ঞায়িত করি, যাতে এটি 1x1 স্কোয়ারে ফিট হয়। আমরা এই বক্ররেখার চারটি অনুলিপি তৈরি করে এগুলি একটি 4x4 স্কোয়ারে ফাঁক করে রেখেছি, যাতে তারা সকলেই বাম পাশের "অবতল" উপস্থাপন করে। এরপরে আমরা দুটি বাম দিকের ক্রমটি 1 টি বক্ররেখা উল্টাতে পারি, যাতে উপরের দিকের একটি অবতরণ উপরের দিকে থাকে, এবং নীচের মুখটি নীচের দিকে থাকে। অবশেষে আমরা সংলগ্ন হিলবার্ট কার্ভগুলির কোণগুলি সংযুক্ত করি। যদি কোনও (এন + 1) -অর্ডার বক্ররেখা পেতে চান, আমাদের কেবলমাত্র চারটি এন-অর্ডার বক্ররেখা দিয়ে প্রক্রিয়াটি পুনরাবৃত্তি করতে হবে। আমরা এখানে প্রক্রিয়াটির একটি দৃশ্য দেখতে পাই (আমি শীঘ্রই প্রক্রিয়াটির বিশদ সম্পর্কিত একটি চিত্রও যুক্ত করব)
এই চ্যালেঞ্জটিতে আপনার কাজটি হল সেই ম্যাট্রিক্সের জন্য সর্বনিম্ন অর্ডার হিলবার্ট কার্ভ বরাবর পূর্ণসংখ্যার একটি ম্যাট্রিক্স আনলোল করা ।
সরলতার জন্য, আমাদের ম্যাট্রিক্সের উপরের বাম কোণ থেকে শুরু করে বক্ররেখা থাকবে।
আপনি পূর্ণসংখ্যার তালিকার তালিকা হিসাবে ইনপুটটি পেতে পারেন, যেখানে প্রতিটি উপ-তালিকা ম্যাট্রিক্সের একটি সারি উপস্থাপন করে।
আপনি ধরে নিতে পারেন যে ইনপুটটি একটি বর্গ ম্যাট্রিক্স (n * n) হবে।
উদাহরণ স্বরূপ:
ইনপুট:
[[ 1, 2,]
[ 3, 4 ]]
আউটপুট:
[ 1, 2, 4, 3 ]
যেহেতু আমরা চিত্রটিতে প্রদর্শিত প্রথম অর্ডার হিলবার্ট কার্ভটি ব্যবহার করছি
ইনপুট:
[[ 1, 2, 3, 4, ]
[ 5, 6, 7, 8, ]
[ 9, 10, 11, 12, ]
[ 13, 14, 15, 16 ]]
আউটপুট:
[ 1, 5, 6, 2, 3, 4, 8, 7, 11, 12, 16, 15, 14, 10, 9, 13 ]
দ্বিতীয় ক্রমটি হিলবার্ট কার্ভ ব্যবহার করে
যথারীতি, স্ট্যান্ডার্ড লুফোলগুলি অনুমোদিত নয়।
এটি কোড-গল্ফ, তাই বাইট জেতে সংক্ষিপ্ত উত্তর।