Eingang:
Ein 2D-Array mit zwei unterschiedlichen (optionalen) Werten. Ich werde 0 und 1 verwenden, wenn ich die Regeln erkläre. Das Eingabeformat ist natürlich flexibel.
Herausforderung:
Nullen sind Wasser und eins sind Inseln. Um die Einsamkeit zu gewährleisten, müssen Sie alle Inseln mit Wasser umgeben, indem Sie Zeilen und Spalten mit Nullen einfügen. Sie möchten kein Wasser verschwenden, daher müssen Sie die Menge des hinzugefügten Wassers minimieren. Wenn es mehr als eine Lösung gibt, für die dieselbe Menge Wasser hinzugefügt werden muss, sollten Sie Wasserspalten und keine Zeilen hinzufügen. Ich werde dies in den Testfällen zeigen.
Ausgabe:
Das neue, modifizierte 2D-Array. Das Ausgabeformat ist natürlich flexibel.
Testfälle:
Eingabe und Ausgabe werden durch Bindestriche getrennt. Hinzugefügte Nullen werden in Fettdruck angezeigt. Verwenden Sie hier eine der Antworten , wenn Sie die Testfälle in bequemere Formate konvertieren möchten.
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
Beachten Sie, dass wir eine Spalte mit Nullen hinzugefügt haben, keine Zeile mit Nullen. Dies liegt daran, dass die Anzahl der erforderlichen Nullen gleich ist und Spalten bevorzugt werden sollten.
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
Beachten Sie, dass wir Zeilen und keine Spalten hinzugefügt haben, da dies die geringste Anzahl zusätzlicher Nullen erfordert.
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
Dies erforderte sowohl Spalten als auch eine Zeile.
0 0 1 0 0
0 1 0 1 0
---
0 0 0 1 0 0 0
0 1 0 0 0 1 0
Es ist besser, zwei Spalten als eine Zeile hinzuzufügen, da weniger Wasser benötigt wird.
0 0
1 0
0 1
1 0
0 0
---
0 0
1 0
0 0
0 1
0 0
1 0
0 0
Es ist besser, zwei Zeilen als eine Spalte hinzuzufügen, da weniger Wasser benötigt wird.
quelle
Antworten:
Gelee , 37 Bytes
Probieren Sie es online aus!
Funktion, die ein 2D-Array von Ganzzahlen zurückgibt. Beachten Sie, dass natürlich in Jelly Singleton-Liste als Wert so angezeigt wird
G
die Ausgabe formatiert wird.Das Programm läuft in exponentieller Zeit, aber bisher konnte ich mir keinen polynomiellen Zeitalgorithmus vorstellen. Verwendet die
Ƥ
dyadische Funktion, die die Herausforderung nachdatiert.quelle
Python 2 ,
374346340339323317 BytesProbieren Sie es online aus!
quelle
[:]
kann entfernt werden, ohne die Ausgabe zu beeinflussen.