निचले स्तर की भाषाएँ, जैसे C और C ++ में वास्तव में बहुआयामी सरणियों की कोई अवधारणा नहीं है। (वैक्टर और गतिशील सरणियों के अलावा) जब आप एक बहुआयामी सरणी बनाते हैं
int foo[5][10];
यह वास्तव में सिंटैक्टिक शुगर है । C जो वास्तव में करता है वह 5 * 10 तत्वों का एक एकल सन्निहित सरणी बनाता है । यह
foo[4][2]
सिंटैक्टिक शुगर भी है। यह वास्तव में तत्व को संदर्भित करता है
4 * 10 + 2
या, 42 वाँ तत्व। सामान्य तौर पर, [a][b]सरणी में तत्व का सूचकांक foo[x][y]होता है
a * y + b
यही अवधारणा 3 डी सरणियों पर लागू होती है। यदि हमारे पास है foo[x][y][z]और हम तत्व [a][b][c]तक पहुँचते हैं तो हम वास्तव में पहुँच वाले तत्व हैं:
a * y * z + b * z + c
यह अवधारणा एन -डायमेंशनल एरेज़ पर लागू होती है । यदि हमारे पास आयामों के साथ एक सरणी है D1, D2, D3 ... Dnऔर हम तत्व S1, S2, S3 ... Snको एक्सेस करते हैं तो सूत्र है
(S1 * D2 * D3 ... * Dn) + (S2 * D3 * D4 ... * Dn) + (S3 * D4 ... * Dn) ... + (Sn-1 * Dn) + Sn
चुनौती
आपको एक प्रोग्राम या फ़ंक्शन लिखना होगा जो उपरोक्त सूत्र के अनुसार बहुआयामी सरणी के सूचकांक की गणना करता है। इनपुट दो ऐरे होंगे। पहला सरणी आयाम है, और दूसरा सरणी सूचकांकों है। इन दो सरणियों की लंबाई हमेशा बराबर और कम से कम 1 होगी।
आप सुरक्षित रूप से मान सकते हैं कि सरणियों में प्रत्येक संख्या एक गैर-नकारात्मक पूर्णांक होगी। आप यह भी मान सकते हैं कि आपको 0आयाम सरणी में नहीं मिलेगा , हालांकि सूचकांकों में 0 हो सकता है। आप यह भी मान सकते हैं कि सूचकांक आयामों से बड़ा नहीं होगा।
परीक्षण IO
Dimensions: [5, 10]
Indices: [4, 2]
Output: 42
Dimensions: [10, 10, 4, 62, 7]
Indices: [1, 2, 3, 4, 5]
Output: 22167
Dimensions: [5, 1, 10]
Indices: [3, 0, 7]
Output: 37
Dimensions: [6, 6, 6, 6, 6, 6, 6, 6, 6, 6]
Indices: [3, 1, 5, 5, 3, 0, 5, 2, 5, 4]
Output: 33570178
int[10]।