एक 2D बाइट सरणी में आयतों की संख्या ज्ञात करें


12
0000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000
0000001111111111111100000000000000000011111111111111100000000000000000
0000001111111111111100000000000000000011111111111111100000000000000000
0000001111111111111100000000000000000011111111111111100000000000000000
0000001111111111111100000000000000000011111111111111100000000000000000
0000000000000000000000000000000000000011111111111111100000000000000000
0000000000000000000000000000000000000011111111111111100000000000000000
0000000000011111100000000000000000000011111111111111100000000000000000
0000000000011111100000000000000000000011111111111111100000000000000000
0000000000011111100000000000000000000011111111111111100000000000000000
0000000000000000000000000000000000000011111111111111100000000000000000
0000000000000000000000000000000000000011111111111111100000000000000000
0000000000000111111000000000000000000011111111111111100000000000000000
0000000000000100001000000111111000000011111111111111100000000010000000
0000000000000100001000000111111000000000000000000000011000000000000000
0000000000000111111000000111111000000000000000000000011000000000000000
0000000000000000000000000000111111000000000000000000000000000000000000
0000000000000000000000000000111111000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000

आपको आकार 2xx आकार के बाइट्स का 2 आयामी सरणी दिया गया है। यह गारंटी है कि सभी बाइट्स 1 या 0 के हैं। 1 डी द्वारा दर्शाए गए आयतों की संख्या को 2d में देखें, जैसा कि ऊपर दिखाया गया है।

गिनती के लिए केवल पूरी तरह से भरी हुई आयतों को माना जाता है।
आयतों को 0 से घिरा होना चाहिए, जब तक कि वे किनारे पर न हों (1 तिरछे स्पर्श करने वाले आयताकार ठीक हैं (उदाहरण देखें। देखें))।

उदाहरण के लिए, ऊपर की सरणी में 5 मान्य आयत हैं।

आप किसी भी भाषा का उपयोग कर सकते हैं।


1
मुझे लगता है कि यह कहने का एक बेहतर तरीका यह है कि: आयतों को 0, या एक किनारे से घिरा होना चाहिए
Cruncher

किया हुआ। एक बेहतर अंग्रेजी में इसे खराब करने के लिए धन्यवाद।
माइक्रोबियन

किस बारे में 1100\n1100\n0011\n0011?
क्रंचर

1
मुझे लगता है कि इसीलिए मैंने 'निकटवर्ती / अतिव्यापी' लिखा। ये मेरे शुरुआती इरादे से 2 मान्य आयतें हैं। लेकिन 'आसपास ’की स्थिति अब उन्हें प्रतिबंधित कर रही है। क्या आपके पास इसे समझाने का बेहतर तरीका है
माइक्रोबियन

1
आसन्न पर भी यह अस्पष्ट है कि क्या विकर्ण का अर्थ आसन्न है या नहीं। वही अस्पष्टता चाहे चारों ओर से घिरी हो या न हो, कोनों में घिरी हुई हो, या सिर्फ किनारे
Cruncher

जवाबों:


2

GolfScript, 107 अक्षर

.n?):L;'1'/{,}%{1$+)}*;][]\{:A{{+}+[1L.~)-1]%&}+1$\,.@^\[[[A]]+{|}*]+}/{.{L%}{%$..&1$,1$,/*$=}:C~\{L/}C&},,

इनपुट STDIN पर दिया जाना चाहिए।

उदाहरण:

11
01
-
0

111
111
-
1

100
001
001
-
2

11100
10101
11100
-
1

101
010
101
-
5

ऊपर टिप्पणियां देखें - ऐसा लगता है कि "वैध" आयतों के लिए चौड़ाई / ऊंचाई दोनों> 1. जरूरत है
पॉल आर

@PaRR यह नियम प्रश्न में नहीं लिखा गया है, सभी उचित परिभाषाओं द्वारा जो पूरी तरह से ठीक आयतें हैं - शायद मैं बाद में जोड़ दूंगा।
हावर्ड

मैं आपकी परिभाषा से सहमत हूं - मैं सिर्फ टिप्पणियों में विसंगति पर ध्यान नहीं दे रहा था - ऐसा लगता है कि ओपी को इसे और अधिक निश्चित बनाने के लिए प्रश्न को अपडेट करने की आवश्यकता है।
पॉल आर।

मैंने स्पष्ट किया कि आकार 1 की आयत वैध है।
माइक्रोबियन

लेकिन आपने टिप्पणियों में यह भी कहा, जवाब में: "बस स्पष्टीकरण के लिए, पतित आयतों को गिना नहीं जाना चाहिए, सही? उदाहरण के लिए, एक 1 या एक ही सबरो / आसन्न 1 के अवैध रूप से अमान्य हैं?" यह कहकर: "हां, वे अमान्य हैं, और उन्हें गिना नहीं जाना चाहिए।"
पॉल आर १
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.