इस सवाल से प्रेरित
1 डी स्ट्रिंग में 2 डी छवि को अनियंत्रित करने का एक और तरीका है कि हिल्बर्ट कर्व का उपयोग किया जाए ।
इस वक्र के कई संस्करण हैं, यह गणना करते समय उपयोग किए जाने वाले पुनरावृत्तियों की संख्या पर निर्भर करता है। पहले क्रम से पांचवें क्रम तक हिल्बर्ट कर्व्स के उदाहरण का अनुसरण करें।
इस वक्र की गणना करने का तरीका निम्नलिखित है। पहले हम पहले क्रम को परिभाषित करते हैं हिल्बर्ट कर्व जो कि आकृति में दिखाया गया है (एन = 1 के लिए एक), ताकि यह 1x1 वर्ग में फिट हो। हम इस वक्र की चार प्रतियां बनाते हैं, उन्हें 4x4 वर्ग में फैलाते हैं, ताकि वे सभी बाईं ओर "सहमति" पेश करें। हम फिर दो सबसे बाएं क्रम 1 घटता फ्लिप करते हैं, ताकि शीर्ष एक समतलता शीर्ष की ओर हो, जबकि नीचे का तल नीचे हो। हम अंत में आसन्न हिल्बर्ट कर्व्स के कोनों को जोड़ते हैं। यदि (n + 1) -आयर्ट कर्व प्राप्त करना चाहते हैं, तो हमें केवल चार n- ऑर्डर कर्व्स के साथ प्रक्रिया को दोहराना होगा। हम यहां प्रक्रिया का एक दृश्य देख सकते हैं (मैं इस प्रक्रिया का विवरण देने वाली एक छवि भी जल्द ही जोड़ूंगा)
इस चुनौती में आपका काम उस मैट्रिक्स के लिए सबसे कम क्रम वाले हिल्बर्ट कर्व के साथ पूर्णांक के एक मैट्रिक्स को अनियंत्रित करना है ।
सादगी के लिए, हमारे पास मैट्रिक्स के शीर्ष बाएं कोने से शुरू होने वाला वक्र होगा।
आप इनपुट को पूर्णांकों की सूची की सूची के रूप में प्राप्त कर सकते हैं, जहां प्रत्येक उप-सूची मैट्रिक्स की एक पंक्ति का प्रतिनिधित्व करती है।
आप मान सकते हैं कि इनपुट एक वर्ग मैट्रिक्स (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 ]
दूसरे क्रम का उपयोग करना हिल्बर्ट कर्व
हमेशा की तरह, मानक खामियों की अनुमति नहीं है।
यह कोड-गोल्फ है, इसलिए बाइट जीत में सबसे छोटा जवाब है।