Ingresso:
Un array 2D contenente due valori distinti (facoltativi). Userò 0 e 1 per spiegare le regole. Il formato di input è ovviamente flessibile.
Sfida:
Gli zeri sono acqua e quelli sono isole. Al fine di garantire la solitudine, il tuo compito è di circondare tutte le isole con acqua inserendo file e colonne di zeri. Non vuoi sprecare acqua, quindi devi ridurre al minimo la quantità di acqua aggiunta. Nel caso in cui ci sia più di una soluzione che richiede la stessa quantità di acqua aggiunta, è necessario aggiungere colonne d'acqua, non file. Lo mostrerò nei casi di test.
Produzione:
Il nuovo array 2D modificato. Il formato di output è ovviamente flessibile.
Casi test:
Input e output sono separati da trattini. Gli zeri aggiunti vengono visualizzati in grassetto. Utilizzare una delle risposte qui se si desidera convertire i casi di test in formati più convenienti.
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
Nota che abbiamo aggiunto una colonna di zeri, non una fila di zeri. Questo perché il numero di zeri necessari è uguale e le colonne dovrebbero essere preferite.
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
Tieni presente che abbiamo aggiunto righe, non colonne, poiché richiede la minima quantità di zeri extra.
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
Ciò ha richiesto entrambe le colonne e una riga.
0 0 1 0 0
0 1 0 1 0
---
0 0 0 1 0 0 0
0 1 0 0 0 1 0
Meglio aggiungere due colonne rispetto a una riga, poiché richiede meno acqua.
0 0
1 0
0 1
1 0
0 0
---
0 0
1 0
0 0
0 1
0 0
1 0
0 0
Meglio aggiungere due file di una colonna, poiché richiede meno acqua.