बाइनरी ब्लॉक विकर्ण मेट्रिसेस पर विचार करें जिनके मुख्य विकर्ण पर 1s के वर्ग ब्लॉक हैं, और हर जगह 0 हैं। आइए ऐसे मेट्रिक्स को "वैध" मैट्रेस कहते हैं।
उदाहरण के लिए, यहां कुछ मान्य 4x4 मैट्रेस हैं:
1 0 0 0 1 1 0 0 1 0 0 0 1 0 0 0 1 1 0 0 1 1 1 1
0 1 0 0 1 1 0 0 0 1 1 0 0 1 1 1 1 1 0 0 1 1 1 1
0 0 1 0 0 0 1 0 0 1 1 0 0 1 1 1 0 0 1 1 1 1 1 1
0 0 0 1 0 0 0 1 0 0 0 1 0 1 1 1 0 0 1 1 1 1 1 1
ध्यान दें कि इस तरह के मैट्रिक्स का वर्णन करने का एक वैकल्पिक तरीका यह है कि शीर्ष-बाएं से नीचे-दाएं, स्पर्श कोने से कोने तक वर्ग 1 ब्लॉक की एक श्रृंखला है और हर जगह 0 है।
इसके विपरीत, यहां कुछ अमान्य 4x4 मैट्रेस हैं:
1 0 1 0 1 0 1 0 1 1 0 0 0 1 1 1 1 1 0 0 0 0 0 0
0 1 1 1 0 1 0 1 1 1 0 0 0 1 1 1 1 1 0 0 0 0 0 0
1 0 0 1 1 0 1 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0
0 0 1 0 0 1 0 1 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0
आपको द्विआधारी मैट्रिक्स nद्वारा nइनपुट के रूप में दिया जाएगा - एक वैध मैट्रिक्स प्राप्त करने के लिए 0आपको न्यूनतम बिट्स की क्या आवश्यकता होगी 1?
आप किसी भी सुविधाजनक स्ट्रिंग, लिस्ट या मैट्रिक्स फॉर्मेट में 0 और 1 एस (जब तक यह प्रीप्रोसेस नहीं किया जाता है) के मैट्रिक्स nद्वारा दर्शाए गए फंक्शन या प्रोग्राम को लिख सकते हैं n। पंक्तियों को किसी तरह से स्पष्ट रूप से अलग किया जाना चाहिए, इसलिए बिट्स के 1 डी सरणी जैसे प्रारूपों की अनुमति नहीं है।
यह कोड-गोल्फ है , इसलिए लक्ष्य आपके कार्यक्रम में बाइट्स की संख्या को कम करना है।
उदाहरण
उदाहरण के लिए, यदि इनपुट है
0 0 0 0 0
0 0 1 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 1
तब उत्तर 5 है, क्योंकि आप पाने के 0लिए पांच बिट्स सेट कर सकते 1हैं:
1 0 0 0 0
0 1 1 0 0
0 1 1 0 0
0 0 0 1 0
0 0 0 0 1
और यह आवश्यक न्यूनतम संख्या है। हालांकि, अगर इनपुट था
0 0 0 0 1
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
तब उत्तर 24 है, एकमात्र वैध 5x5 मैट्रिक्स के बाद से जहां शीर्ष-दाएं 1सभी 1s का मैट्रिक्स है ।
परीक्षण के मामलों
टेस्ट यहां पूर्णांक के 2 डी सरणी के रूप में दर्शाए गए हैं।
[[0]] -> 1
[[1]] -> 0
[[0,1],[0,0]] -> 3
[[1,0],[0,0]] -> 1
[[0,0,0],[0,1,0],[0,0,0]] -> 2
[[0,1,0],[0,0,0],[0,1,0]] -> 7
[[0,1,0],[1,0,0],[0,0,1]] -> 2
[[1,1,1],[1,1,1],[1,1,1]] -> 0
[[0,0,0,0],[0,0,1,0],[0,1,0,0],[0,0,0,0]] -> 4
[[0,0,1,0],[0,0,0,0],[0,0,0,0],[0,0,0,1]] -> 8
[[0,0,1,0],[0,0,0,0],[0,0,0,0],[0,0,1,0]] -> 14
[[0,0,1,0],[0,0,0,0],[0,0,0,0],[0,1,0,0]] -> 14
[[0,0,0,0,0],[0,0,0,0,0],[0,1,0,0,0],[0,0,0,0,1],[0,0,0,0,0]] -> 7
[[0,0,0,0,0],[0,0,0,0,0],[1,0,0,0,0],[0,0,0,0,1],[0,0,0,0,0]] -> 11
[[0,0,0,0,0],[0,0,1,0,0],[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,1]] -> 5
[[0,0,0,0,1],[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0]] -> 24
[[0,0,0,1,0],[0,0,0,0,1],[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0]] -> 23
[[0,1,0,0,0],[1,0,0,0,0],[0,0,1,0,0],[0,0,0,0,1],[0,0,0,1,0]] -> 4
[[0,1,1,1,0],[0,1,1,0,1],[0,1,1,1,0],[0,1,0,0,1],[0,0,0,0,0]] -> 14
टिप्पणियाँ
- संबंधित चुनौती: एक ब्लॉक-विकर्ण मैट्रिक्स प्रिंट करें
- प्रेरणा: स्वतंत्रता कारखाना, Google कोड जाम 2016 समस्या 2 डी