Entrada:
Uma matriz 2D contendo dois valores distintos (opcionais). Usarei 0 e 1 ao explicar as regras. O formato de entrada é obviamente flexível.
Desafio:
Zeros são água e uns são ilhas. Para garantir a solidão, sua tarefa é cercar todas as ilhas com água, inserindo linhas e colunas de zeros. Você não quer desperdiçar água, por isso deve minimizar a quantidade de água adicionada. Caso haja mais de uma solução que exija a mesma quantidade de água adicionada, adicione colunas de água, não linhas. Vou mostrar isso nos casos de teste.
Resultado:
A nova matriz 2D modificada. O formato de saída é obviamente flexível.
Casos de teste:
Entrada e saída são separadas por traços. Os zeros adicionados são mostrados em negrito. Use uma das respostas aqui se desejar converter os casos de teste para formatos mais convenientes.
1
---
1
1 1
---
1 0 1
1 1
1 1
---
1 0 1
0 0 0
1 0 1
1 0
0 1
---
1 0 0
0 0 1
Observe que adicionamos uma coluna de zeros, não uma linha de zeros. Isso ocorre porque o número de zeros necessários é igual e as colunas devem ser preferidas.
1 0 0 0 1
0 1 0 1 0
0 0 1 0 0
0 1 0 1 0
---
1 0 0 0 1
0 0 0 0 0
0 1 0 1 0
0 0 0 0 0
0 0 1 0 0
0 0 0 0 0
0 1 0 1 0
Observe que adicionamos linhas, não colunas, pois isso requer a menor quantidade de zeros extras.
0 0 1 0 0
0 1 1 1 0
---
0 0 0 1 0 0 0
0 0 0 0 0 0 0
0 1 0 1 0 1 0
Isso exigiu colunas e uma linha.
0 0 1 0 0
0 1 0 1 0
---
0 0 0 1 0 0 0
0 1 0 0 0 1 0
Melhor adicionar duas colunas do que uma linha, pois requer menos água.
0 0
1 0
0 1
1 0
0 0
---
0 0
1 0
0 0
0 1
0 0
1 0
0 0
Melhor adicionar duas linhas do que uma coluna, pois requer menos água.