주 대각선에 1의 정사각형 블록이 있고 다른 곳에서는 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 의 nby n행렬을 나타내는 편리한 문자열, 목록 또는 행렬 형식을 취하는 함수 나 프로그램을 작성할 수 있습니다 . 행은 어떤 방식으로도 명확하게 분리되어야하므로 1D 비트 배열과 같은 형식은 허용되지 않습니다.
이것은 code-golf 이므로 목표는 프로그램의 바이트 수를 최소화하는 것입니다.
예
예를 들어 입력이
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하여 얻을 수 있기 때문에 대답은 5입니다 .
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
오른쪽 상단 1이 모든 1의 행렬 이므로 유일하게 유효한 5x5 행렬이므로 답은 24 입니다.
테스트 사례
여기서 테스트는 2D 정수 배열로 표시됩니다.
[[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