비트 행렬 (최소 하나 이상 포함)이 있다고 가정 해 봅시다 1
.
0 1 0 1 1 0 1 0 0 1 0
0 1 0 1 0 0 1 0 1 1 0
0 0 1 0 1 1 0 1 0 1 0
1 1 0 0 1 0 0 1 1 0 1
0 0 0 1 0 1 1 0 0 1 0
이 행렬에서 비트의 일부를 설정하여 연속적인 블로 브를 형성합니다 1
. 여기서 모든 비트는 직교 이동을 통해 1
서로 직접 또는 간접적으로 연결됩니다 1
.
0 1 1 1 1 1 1 0 0 1 0
0 1 0 1 0 0 1 0 1 1 0
0 1 1 0 1 1 1 1 0 1 0
1 1 0 0 1 0 0 1 1 1 1
0 0 0 1 1 1 1 0 0 1 0
( 1
브라우저의 "찾기"기능 으로 검색하면 더 명확하게 볼 수 있습니다 .)
그러나 설정 한 비트 수를 최소화하려고합니다.
작업
비트 또는 부울의 행렬 (또는 배열의 배열)이 주어지면 연속적인 1
s 대륙을 만들기 위해 설정해야하는 최소 비트 수를 반환합니다 . 직교 방향으로 다른 세트 비트로 만 이동하여 매트릭스의 한 세트 비트에서 다른 세트 비트로 이동할 수 있어야합니다.
이것은 code-golf 이므로 가장 짧은 유효한 제출 (바이트 단위로 측정)이 이깁니다.
테스트 사례
0 1 0 1 1 0 1 0 0 1 0
0 1 0 1 0 0 1 0 1 1 0
0 0 1 0 1 1 0 1 0 1 0
1 1 0 0 1 0 0 1 1 0 1
0 0 0 1 0 1 1 0 0 1 0
=> 6
1 0 0 0 0 0 1 0 0
1 1 0 0 1 1 1 0 0
1 1 1 0 1 1 1 1 1
0 1 0 0 0 0 0 0 0
0 0 0 0 0 1 1 1 1
0 1 0 0 0 0 1 1 0
1 0 0 0 0 0 1 0 0
=> 4
0 0 0 1 1 1 0 1 1
0 0 1 0 0 0 0 1 0
0 0 1 1 1 1 1 1 0
1 1 0 0 1 1 0 0 0
0 0 1 1 1 0 0 1 1
0 1 1 1 0 0 0 0 0
1 1 1 0 0 1 1 1 0
1 1 1 0 1 1 0 1 1
0 0 0 0 1 0 0 0 1
1 1 0 0 1 1 0 1 1
0 0 0 0 0 0 0 1 0
0 1 1 1 1 0 0 0 0
0 0 0 1 1 0 0 0 1
0 1 0 0 1 0 1 1 0
0 1 1 1 0 0 0 0 1
=> 8
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
=> 0
1
행렬 이 없으면 어떻게해야 합니까?