परिचय
एक छोटा सा गाँव है जिसमें कुछ घर और खाली खेत नहीं हैं। स्थानीय नौकरशाह गाँव को बहुत से हिस्सों में बाँटना चाहते हैं, ताकि हर एक घर में ठीक एक घर हो, और बहुत से लोग एक अच्छी सीधी रेखा वाले ग्रिड का निर्माण करते हैं। आपका कार्य यह निर्धारित करना है कि क्या यह संभव है।
काम
आपका इनपुट आयताकार 2 डी सरणी बिट्स है; 1 एक घर और 0 एक खाली मैदान का प्रतिनिधित्व करता है। इसका आकार कम से कम 1 × 1 होगा , और इसमें कम से कम 1 शामिल होगा। आप किसी भी उचित प्रारूप में इनपुट ले सकते हैं (पूर्णांक की नेस्टेड सूची, तार की सूची, बहुस्तरीय स्ट्रिंग आदि)।
आपका कार्यक्रम यह निर्धारित करेगा कि सरणी को सीधे क्षैतिज और ऊर्ध्वाधर लाइनों का उपयोग करके ग्रिड कोशिकाओं में विभाजित किया जा सकता है ताकि प्रत्येक ग्रिड सेल में ठीक 1 हो। ग्रिड कोशिकाओं के अलग-अलग आकार और आकार हो सकते हैं, हालांकि वे हमेशा आयताकार होंगे। पंक्तियों को सरणी के एक किनारे से विपरीत किनारे तक चलना चाहिए।
उदाहरण के लिए, निम्नलिखित एक सरणी का एक वैध विभाजन है:
00|0010|01|1
01|0000|00|0
--+----+--+-
00|0000|00|1
01|0010|01|0
--+----+--+-
01|1000|10|1
हालांकि निम्नलिखित विभाजन मान्य नहीं है, क्योंकि ग्रिड कोशिकाएं हैं जिनके पास 1s या 1 से अधिक नहीं हैं:
00|0010|01|1
--+----+--+-
01|0000|00|0
00|0000|00|1
01|0010|01|0
--+----+--+-
00|1000|10|1
यदि कोई मान्य विभाजन मौजूद है, तो आप एक सत्य मान और अन्यथा मिथ्या मान का उत्पादन करेंगे।
नियम और स्कोरिंग
आप एक पूर्ण कार्यक्रम या एक फ़ंक्शन लिख सकते हैं। सबसे कम बाइट गिनती जीतती है।
परीक्षण के मामलों
[[1]] -> True
[[0,1],[1,0]] -> True
[[1,1],[1,0]] -> False
[[1,0,1],[0,1,0]] -> True
[[1,0],[0,1],[0,1]] -> True
[[1,0,0],[0,0,1],[0,1,1]] -> True
[[1,1,1],[1,1,1],[1,1,1]] -> True
[[1,0,1],[0,1,0],[1,0,0]] -> True
[[1,0,0],[1,0,0],[0,1,1]] -> False
[[0,0,0,0,1],[1,0,0,1,0],[0,0,0,1,0]] -> False
[[0,0,1,0,1],[0,0,0,1,0],[0,0,0,0,0]] -> True
[[1,1,0,0,0],[0,0,0,0,0],[1,0,1,0,0]] -> True
[[1,1,0,1,1],[0,1,0,1,1],[1,0,0,0,0]] -> True
[[0,0,0,0,0,0,0],[0,1,1,1,0,1,0],[0,1,0,0,1,0,0],[0,0,0,0,0,0,1],[0,0,1,0,0,0,1],[1,1,0,1,1,0,0]] -> False
[[1,1,0,0,0,0,0],[1,0,1,1,0,1,0],[0,0,0,0,1,0,0],[0,1,0,1,1,0,0],[1,0,0,0,1,1,0],[0,0,0,0,0,1,0]] -> False
[[0,1,0,1,1,1,0],[0,0,0,0,1,0,0],[0,0,0,0,0,0,0],[1,0,0,1,0,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,0,1]] -> True
[[0,1,0,0,1,0,1],[1,0,0,0,1,0,1],[0,0,1,0,1,0,1],[1,0,0,0,1,1,0],[0,0,0,1,1,1,0],[0,1,0,0,1,0,1]] -> True
[[0,1,0,0,1,0,0,1,0],[0,0,0,0,1,1,0,1,0],[1,1,0,0,1,0,0,0,0],[0,0,1,0,1,0,1,0,0],[0,0,1,0,1,0,1,0,0],[0,1,0,0,0,1,0,0,1],[0,1,0,0,0,0,1,0,0]] -> False
[[1,0,1,0,0,1,1,0,1],[0,1,1,0,0,1,1,0,1],[1,0,0,0,0,1,0,0,0],[0,0,0,0,0,0,0,0,0],[0,0,1,0,0,0,0,1,1],[0,1,1,0,1,0,1,0,1],[1,0,1,0,0,1,1,0,1]] -> True
[[1, 0, 1], [0, 1, 0], [1, 0, 0]]
वह एकमात्र 3x3 मैट्रिक्स था, जिसके लिए मेरा नया दृष्टिकोण विफल हो रहा था।