J , 33 27 바이트
FrownyFrog 덕분에 -6 바이트!
[:>./@,,~@#\(#**/)@,;._3"$]
온라인으로 사용해보십시오!
설명:
설명에 첫 번째 테스트 사례를 사용하겠습니다.
] a =. 3 5$1 0 1 0 0 1 0 1 1 1 1 1 1 1 1 1 0 0 1 0
1 0 1 0 0
1 0 1 1 1
1 1 1 1 1
1에서 입력 행 수까지의 크기로 가능한 모든 정사각형 서브 매트릭스를 생성합니다.
,~@#\
입력 ,.
의 연속 접두사 길이를 스티칭하여 하위 행렬의 크기에 대한 쌍 목록을 작성합니다 #\
.
,~@#\ a
1 1
2 2
3 3
그런 다음 그것들을 사용 x u ;. _3 y
하여 입력을 하위 행렬 로 자릅니다 . 나는 이미 x
(크기 목록)을 가지고 있습니다. y
올바른 인수입니다 ]
(입력).
((,~@#\)<;._3"$]) a
┌─────┬─────┬─────┬───┬─┐
│1 │0 │1 │0 │0│
│ │ │ │ │ │
│ │ │ │ │ │
├─────┼─────┼─────┼───┼─┤
│1 │0 │1 │1 │1│
│ │ │ │ │ │
├─────┼─────┼─────┼───┼─┤
│1 │1 │1 │1 │1│
└─────┴─────┴─────┴───┴─┘
┌─────┬─────┬─────┬───┬─┐
│1 0 │0 1 │1 0 │0 0│ │
│1 0 │0 1 │1 1 │1 1│ │
│ │ │ │ │ │
├─────┼─────┼─────┼───┼─┤
│1 0 │0 1 │1 1 │1 1│ │
│1 1 │1 1 │1 1 │1 1│ │
├─────┼─────┼─────┼───┼─┤
│ │ │ │ │ │
└─────┴─────┴─────┴───┴─┘
┌─────┬─────┬─────┬───┬─┐
│1 0 1│0 1 0│1 0 0│ │ │
│1 0 1│0 1 1│1 1 1│ │ │
│1 1 1│1 1 1│1 1 1│ │ │
├─────┼─────┼─────┼───┼─┤
│ │ │ │ │ │
│ │ │ │ │ │
├─────┼─────┼─────┼───┼─┤
│ │ │ │ │ │
└─────┴─────┴─────┴───┴─┘
각 하위 행렬에 대해 완전히 1로 구성되어 있는지 확인합니다
(#**/)@,
.-행렬을 평탄화하고 제품별로 항목 수를 곱합니다. 모든 항목이 1이면 결과는 합계가되고, 그렇지 않으면-0입니다.
(#**/)@, 3 3$1 0 0 1 1 1 1 1 1
0
(#**/)@, 2 2$1 1 1 1
4
((,~@#\)(+/**/)@,;._3"$]) a
1 0 1 0 0
1 0 1 1 1
1 1 1 1 1
0 0 0 0 0
0 0 4 4 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
마지막으로 각 하위 행렬에 대한 결과 목록을 평면화하고 최대 값을 찾습니다.
>./@,
([:>./@,,~@#\(+/**/)@,;._3"$]) a
4