यह केल्विन के शौक से हाल ही में गुणा तालिका चुनौती से प्रेरित है ।
एक फ़ंक्शन या प्रोग्राम लिखें जो एक पूर्णांक N
को इनपुट और प्रिंट के रूप में लेता है या एक एन-बाय-एन अद्वितीय गुणन सर्पिल देता है। कोड को 0 और 1000 के बीच N के लिए (सिद्धांत रूप में) काम करना होगा (हालांकि इसका उत्पादन कठिन हो सकता है)। आउटपुट निम्न प्रक्रिया द्वारा उत्पादित तालिका के बराबर होना चाहिए:
एन-बाय-एन गुणन तालिका भरें। उदाहरण के लिए N = 3:
1 2 3 2 4 6 3 6 9
ऊपरी बाएँ कोने से एक सर्पिल दक्षिणावर्त का पालन करें, उन संख्याओं पर ध्यान दें जो आप यात्रा करते हैं। जब आप एक नंबर पर जाते हैं जो आपने पहले से ही देखा है, तो इसे 0 से बदल दें।
कुछ उदाहरण इसे और अधिक स्पष्ट कर सकते हैं:
n = 0:
0
n = 1:
1
n = 2: // Spiral order:
1 2 // 1 2
0 4 // 4 3
n = 3:
1 2 3 // 1 2 3
0 4 6 // 8 9 4
0 0 9 // 7 6 5
n = 4:
1 2 3 4 // 1 2 3 4
0 0 6 8 // 12 13 14 5
0 0 9 12 // 11 16 15 6
0 0 0 16 // 10 9 8 7
n = 5:
1 2 3 4 5
0 0 6 8 10
0 0 9 12 15
0 0 0 16 20
0 0 0 0 25
n = 10:
1 2 3 4 5 6 7 8 9 10
0 0 0 0 0 12 14 16 18 20
0 0 0 0 15 0 21 24 27 30
0 0 0 0 0 0 28 32 36 40
0 0 0 0 25 0 35 0 45 50
0 0 0 0 0 0 42 48 54 60
0 0 0 0 0 0 49 56 63 70
0 0 0 0 0 0 0 64 72 80
0 0 0 0 0 0 0 0 81 90
0 0 0 0 0 0 0 0 0 100
नंबर इस तरह पाए जाते हैं:
कोई भी उचित आउटपुट प्रारूप स्वीकार किया जाता है, लेकिन यह एक एन-बाय-एन मैट्रिक्स होना चाहिए, यह सिर्फ एक सूची नहीं हो सकती है। नीचे दिए गए ऐसे प्रारूप को स्वीकार कर लिया जाता है, क्योंकि एन आसानी से 1-बाय-एन कॉलम या एन-बाय-1 नंबर के रूप में अलग-अलग होते हैं:
[[1 2 3][0 4 6][0 0 9]] <-- OK
[[1 0 0][2 4 0][3 6 9]] <-- OK
ans = <-- OK
1 2 3
0 4 6
0 0 9
बाइट्स में सबसे छोटा कोड जीत जाता है।
n=0
जहां गुणन सारणी में शून्य नहीं है, वहां उत्पादन क्यों होगा । मैं समझ सकता हूं n=1
कि आउटपुट 1 होगा, लेकिन शून्य क्यों शामिल है?
n=0
होना चाहिए , इसलिए आउटपुट के लिए 0-by-0 मैट्रिक्स होना चाहिए, या प्रश्न असंगत होगा।