MATL , 22 20 19 बाइट्स
Ti:"2Y6Y+FT_Y)]!i_)
दोनों इनपुट 0-आधारित हैं।
इसे ऑनलाइन आज़माएं!
व्याख्या
चलो r
और c
दो आदानों, क्रमशः निर्दिष्ट करने 0-आधारित पंक्ति और स्तंभ को दर्शाते हैं।
पास्कल के रोम्बस में प्रत्येक नई पंक्ति को कर्नेल के साथ सजाकर[1 1 1; 0 1 0]
और परिणाम की अंतिम दो पंक्तियों को स्वैप करके मैट्रिक्स से पिछली दो पंक्तियों से बनाया जा सकता है । यह r
बार किया जाता है, मैट्रिक्स से शुरू होता है 1
।
यह कर्नेल का उपयोग करने के लिए छोटा हो जाता है [0 1 0; 1 1 1; 0 1 0]
, जो एक पूर्वनिर्धारित शाब्दिक है। यह एक अतिरिक्त पंक्ति उत्पन्न करता है, जिसे छोड़ दिया जाएगा।
उदाहरण के लिए विचार करें r = 3
, इसलिए 3
पुनरावृत्तियाँ हैं।
से शुरू
1
साथ घुमाव [0 1 0; 1 1 1; 0 1 0]
देता है
0 1 0
1 1 1
0 1 0
अंतिम दो पंक्तियों (पूरे मैट्रिक्स, इस मामले में) को रखना और उन्हें स्वैप करना
0 1 0
1 1 1
के साथ ऊपर की बातचीत [0 1 0; 1 1 1; 0 1 0]
देता है
0 0 1 0 0
0 1 1 1 0
1 2 4 2 1
0 1 1 1 0
अंतिम दो पंक्तियों द्वारा निर्मित मैट्रिक्स अदला-बदली है
0 1 1 1 0
1 2 4 2 1
इसमें सबसे नीचे नई पंक्ति है, और पूर्ववर्ती शून्य के साथ विस्तारित है।
फिर से उपज देना
0 0 1 1 1 0 0
0 1 2 3 2 1 0
1 3 8 9 8 3 1
0 1 2 4 2 1 0
अंतिम दो पंक्तियों की अदला-बदली कर देता है
0 1 2 4 2 1 0
1 3 8 9 8 3 1
r
पुनरावृत्तियों के होने के बाद , आउटपुट अंतिम मैट्रिक्स की अंतिम पंक्ति में समाहित है। उदाहरण के लिए, c = 2
(0-आधारित) परिणाम होगा 8
। अंतिम पंक्ति और वांछित कॉलम को इंडेक्स करने के बजाय, एक ट्रिक का उपयोग किया जा सकता है जो प्रत्येक पंक्ति की समरूपता का शोषण करता है : अंतिम मैट्रिक्स को ट्रांसपोज़ किया जाता है
0 1
1 3
2 8
4 9
2 8
1 3
0 1
और इसका -c
तत्त्व लिया गया है। यह रैखिक अनुक्रमण का उपयोग करता है, अर्थात, मैट्रिक्स को स्तंभ-प्रमुख क्रम में एकल सूचकांक द्वारा अनुक्रमित किया जाता है । चूंकि इंडेक्सिंग मॉड्यूलर है , -entry निचला-दायां कोना (मान ) है और -th प्रविष्टि दो चरणों से ऊपर (मान ) है।0
1
-2
8
T % Push true
i % Input row number
:" % Do the following that many times
2Y6 % Push predefined literal [0 1 0; 1 1 1; 0 1 0]
Y+ % 2D convolution, increasing size
FT_ % Push [0 -1]
Y) % Matrix with rows 0 (last) and -1 (second-last), in that order
] % End
! % Transpose
i % Input: colun number
_ % Negate
) % Entry with that index. Implicitly display