2D 바이트 배열에서 직사각형의 수를 구합니다


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

mx n 크기의 2 차원 바이트 배열이 제공됩니다. 모든 바이트가 1 또는 0임을 보장합니다. 위와 같이 2d에서 볼 때 1로 표시되는 직사각형 수를 찾으십시오.

완전히 채워진 사각형 만 계산에 고려됩니다.
사각형은 가장자리에 있지 않는 한 0으로 둘러싸 야합니다 (1의 대각선으로 닿는 사각형은 괜찮습니다 (예 참조)).

예를 들어, 위의 배열에는 5 개의 유효한 사각형이 있습니다.

모든 언어를 사용할 수 있습니다.


1
단어를 표현하는 더 좋은 방법은 다음과 같습니다. 사각형은 0 또는 모서리로 둘러싸 야합니다.
Cruncher

끝난. 더 나은 영어로 표현해 주셔서 감사합니다.
microbian

무엇에 대해 1100\n1100\n0011\n0011?
Cruncher

1
나는 그것이 '인접 / 겹침'을 쓴 이유라고 생각합니다. 이들은 처음 의도에서 2 개의 유효한 사각형입니다. 그러나 '주변'조건은 이제 그들을 제한하고 있습니다. 더 잘 설명 할 수있는 방법이 있습니까
microbian

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

위의 주석을 참조하십시오- "유효한"사각형의 너비 / 높이는
Paul R

@PaulR 그 규칙은 모든 합리적인 정의에 의해 완벽하게 훌륭한 사각형입니다-나중에 추가 할 것입니다.
Howard

귀하의 정의에 동의합니다-의견에 불일치가 있음을 나타냅니다. OP가 질문을보다 명확하게 만들기 위해 질문을 업데이트 해야하는 것처럼 보입니다.
Paul R

크기 1의 사각형이 유효하다는 것을 알았습니다.
microbian

그러나 당신은 또한 주석에서 "설명을 위해 퇴화 사각형을 계산해서는 안되며 맞습니까? 예를 들어 인접한 1의 단일 1 또는 단일 하위 행 / 하위 열이 유효하지 않습니까?" "예, 유효하지 않으며 계산해서는 안됩니다."
Paul R
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.