নিম্ন স্তরের ভাষা যেমন সি এবং সি ++ এর আসলে বহুমাত্রিক অ্যারেগুলির কোনও ধারণা নেই। (ভেক্টর এবং গতিশীল অ্যারে ব্যতীত) যখন আপনি একটি বহুমাত্রিক অ্যারে তৈরি করেন
int foo[5][10];
এটি আসলে কেবল সিনট্যাকটিক চিনি । সি আসলে যা করে তা হ'ল 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
এই ধারণাটি n- মাত্রিক অ্যারেগুলিতে প্রযোজ্য । আমাদের যদি মাত্রার সাথে একটি অ্যারে থাকে 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