मैट्रिक्स गुणन को समझाने के लिए विभिन्न तरीके हैं। मैं एक ही आकृति के साथ रहूँगा क्योंकि मेरा मानना है कि यहाँ अधिकांश लोग इससे परिचित हैं (और यह चित्र बहुत ही वर्णनात्मक है)। यदि आप अधिक विस्तृत जानकारी चाहते हैं, तो मेरा सुझाव है कि आप विकिपीडिया-लेख , या वुल्फराम मैथवर्ल्ड पर स्पष्टीकरण पर जाएँ ।
सरल स्पष्टीकरण:
मान लीजिए कि आपके पास दो मेट्रिस हैं, ए और बी , जहां ए 3-बाय -2 है, और बी 2-बाय -3 है। यदि आप मैट्रिक्स पर इन गुणा को मेट्रिसेस पर करते हैं, तो AB या BA से आपको नीचे परिणाम मिलेंगे:
चुनौती:
आप में सांकेतिक मैट्रिक्स गुणन को लागू करें । आप इनपुट के रूप में दो मेट्रिक्स लेंगे, जहां मैट्रिसेस में प्रत्येक तत्व एक गैर-व्हाट्सएप ASCII- वर्ण (कोड अंक 33-126) द्वारा दर्शाया गया है। आपको इन मेट्रिसेस के उत्पाद का उत्पादन करना होगा।
उत्पादन से संबंधित नियम:
दो प्रविष्टियों के उत्पाद के बीच कोई प्रतीक नहीं होगा। यह ab
, नहीं a*b
, a·b
, times(a,b)
या ऐसा ही कुछ। यह aa
नहीं है a^2
।
शब्दों के योग के बीच में एक स्थान (ASCII कोड बिंदु 32) होना चाहिए। यह a b
, ऐसा नहीं है a+b
, plus(a,b)
या कुछ समान है।
उन दो नियमों के लिए तर्क है: सभी गैर-सफेद अंतरिक्ष वर्णों को प्रतीकों में प्रतीक के रूप में अनुमति दी जाती है, इस प्रकार उन्हें गणितीय प्रतीकों के रूप में उपयोग करना गड़बड़ होगा। तो, जो आप सामान्य रूप से लिख सकते हैं a*b+c*d
वह होगा ab cd
।
आप शर्तों का क्रम चुन सकते हैं। ab cd
, dc ab
और cd ba
गणितीय रूप से वही बोल रहे हैं, इसलिए आप यहां भी आदेश चुन सकते हैं। जब तक यह गणितीय रूप से सही न हो जाए तब तक आदेश के अनुरूप होने की आवश्यकता नहीं है।
मैट्रिक्स प्रारूपण के बारे में नियम:
एक मैट्रिक्स को पंक्तियों के बीच कोई सीमांकक के साथ एक स्ट्रिंग के अलावा, जो भी प्रारूप में आप पसंद करते हैं, उसमें प्रवेश किया जा सकता है (यह इसलिए है क्योंकि आउटपुट पूरी तरह से गड़बड़ हो जाएगा)। दोनों मैट्रिसेस को एक ही फॉर्मेट पर इनपुट करना होगा। नीचे दिए गए सभी उदाहरण मैट्रिक्स को दर्ज करने और आउटपुट करने के मान्य तरीके हैं।
"ab;cd" <- This will look awful, but it's still accepted.
"a,b\nc,d"
[[a,b],[c,d]]
[a, b]
[c, d]
मुझे पता है कि यह बहुत सारे प्रारूपों की अनुमति देता है जो गड़बड़ दिखेंगे, लेकिन चुनौती मैट्रिसेस को गुणा करने के बारे में है, आउटपुट को स्वरूपित करने में नहीं।
सामान्य नियम:
- आप मान्य इनपुट मान सकते हैं। मैट्रिक्स गुणन हमेशा दिए गए आयामों से संभव होगा।
- केवल दो मैट्रेस होंगे।
- आप यह मान सकते हैं कि मेट्रिसेस नॉन-खाली हैं
- अंतर्निहित कार्य स्वीकार किए जाते हैं (लेकिन स्वरूपण आवश्यकताओं के कारण शायद थोड़ा बोझिल)।
- यदि आवश्यक हो (
\'
इसके बजाय'
) इनपुट में आप निश्चित रूप से एस्केप पात्रों का उपयोग कर सकते हैं । - किसी भी मानक इनपुट और आउटपुट विधि ठीक है ।
परीक्षण के मामलों:
दो इनपुट मैट्रिस को बीच में एक खाली लाइन के साथ दिखाया गया है। आउटपुट के बाद दिखाया गया है Output:
। जब दो आउटपुट मैट्रिस होते हैं तो यह केवल अन्य आउटपुट दिखाने के लिए होता है जिसे स्वीकार किया जाएगा।
टेस्ट केस # 1
Inputs:
[a]
[b]
Output:
[ab]
[ba] <- Also OK
टेस्ट केस # 2
Inputs:
[a, b]
[1, 4]
[y, {]
[%, 4, 1]
[a, b, c]
Output:
[a% ba, a4 bb, a1 bc]
[1% 4a, 14 4b, 11 4c]
[y% {a, y4 {b, y1 {c]
टेस्ट केस # 3:
Inputs:
[1, 2, 3, 4]
[5, 6, 7, 8]
[9, 1, 2, 3]
[4, 5, 6, 7]
[a]
[b]
[c]
[d]
Output:
[1a 2b 3c 4d]
[5a 6b 7c 8d]
[9a 1b 2c 3d]
[4a 5b 6c 7d]
[d4 c3 b2 a1] <-- Also OK
[d8 c7 b6 a5]
[1b 9a c2 3d]
[a4 b5 d7 6c]
यदि ab cd
इसके बजाय नियमों की आवश्यकता के बारे में आपकी प्रतिक्रिया a*b+c*d
है: आपको बोझिल इनपुट / आउटपुट प्रारूपों से बचना चाहिए , तो मैं ध्यान देना चाहूंगा कि इनपुट और आउटपुट प्रारूप बहुत लचीले हैं। तथ्य यह है कि आप उपयोग नहीं कर सकते हैं *
और +
उत्पादों और रकमों के लिए एक साधारण निर्मित में उपयोग करना कठिन हो सकता है, लेकिन मैं उस नकारात्मक बात पर विचार नहीं करता हूं।