समस्या
अनंत सर्पिल ऊपर-बाएँ सेल से शुरू होती है। पहली चार पंक्तियाँ और स्तंभ नीचे दिखाए गए हैं। इसी पैटर्न को बढ़ती हुई वर्गाकार परतों में जारी रखें। निर्देशांक 1 से शुरू होते हैं।
1 2 9 10
4 3 8 11
5 6 7 12
16 15 14 13पूरा ग्रिड बनाए बिना केवल एक सेल का मान लौटाएँ।
number_spiral(row, column) को लागू करें।
इनपुट
row: ऊपर से गिनी गई पंक्ति, जो 1 से शुरू होती है।
column: बाएँ से गिना गया स्तंभ, जो 1 से शुरू होता है।
आउटपुट
उस स्थान पर स्थित संख्या लौटाएँ।
सीमाएँ
1 ≤ row, column ≤ 1,000,000,000। मान एक साइन किए गए 64-बिट पूर्णांक में समा जाएगा।
उदाहरण
इनपुट:
row = 3
column = 2
अपेक्षित आउटपुट:
expected = 6
इनपुट:
long long row = 3;
long long column = 2;
अपेक्षित आउटपुट:
long long expected = 6;
इनपुट:
long row = 3;
long column = 2;
अपेक्षित आउटपुट:
long expected = 6;
व्याख्या
दिखाई गई तीसरी पंक्ति में, दूसरा मान 6 है।
इनपुट:
row = 1
column = 4
अपेक्षित आउटपुट:
expected = 10
इनपुट:
long long row = 1;
long long column = 4;
अपेक्षित आउटपुट:
long long expected = 10;
इनपुट:
long row = 1;
long column = 4;
अपेक्षित आउटपुट:
long expected = 10;
व्याख्या
चौथी वर्गाकार परत शीर्ष पंक्ति में 10 से शुरू होती है।
कैसे हल करें
पहले खुद कोशिश करें, फिर एक-एक करके संकेत खोलें।
संकेत 1
Spiral square layers में बनती है, इसलिए हर cell उस layer में आता है जो बड़े coordinate से तय होती है.
संकेत 2
उस layer की parity देखकर तय करो कि values row में बढ़ती हैं या column में.
संकेत 3
ध्यान दो कि layer top-left corner से शुरू होती है या opposite corner से पहले.
अपेक्षित जटिलता
समय O(1), अतिरिक्त स्थान O(1)
संदर्भ
यह चुनौती CodeUtility के लिए अनुकूलित की गई है। ऊपर दिए गए स्टेटमेंट और सीमाओं का पालन करें।