假设我们有一个位矩阵(至少包含一个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
我们想要设置此矩阵中的某些位,以使其形成1s 的连续Blob ,其中每个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使用浏览器的“查找”功能进行搜索,可以更清楚地看到这一点。)
但是,我们还希望最小化设置的位数。
任务
给定一个位或布尔值的矩阵(或数组的数组),返回创建1s 的连续大陆所需设置的最小位数。通过仅在与其他设置位正交的方向上移动,应该有可能从矩阵中的一个设置位到达另一位。
这是代码高尔夫球,因此最短的有效提交(以字节为单位)获胜。
测试用例
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
              
                  这需要更多解释。矩阵中的“连续斑点”是什么?
                
                
                  
                    —
                    NoOneIsHere 
                    
                  
                
              
                  @Peter Taylor和esolangingfruit NP-Hardness
                
                
                  
                    —
                    FantaC 
                    
                  
                
              
                  如果
                
                  
                    —
                    Colera Su 
                    
                  
                
              1矩阵中不存在该怎么办?