Dies ist die zweite in einer Reihe von Island Golf Herausforderungen. Vorherige Herausforderung
Zwei Einsiedler sind auf einer einsamen Insel angekommen. Da sie auf der Suche nach Einsamkeit kamen, möchten sie so weit wie möglich voneinander entfernt leben. Wo sollen sie ihre Hütten bauen, um die Entfernung zwischen ihnen zu maximieren?
Eingang
Ihre Eingabe ist ein rechteckiges Raster aus zwei Zeichen, die Land und Wasser darstellen. In den folgenden Beispielen ist Land #
und Wasser .
, Sie können jedoch zwei beliebige Zeichen ersetzen.
...........
...##......
..#####....
..#######..
.#########.
...#######.
...#####.#.
....####...
...........
Es wird immer mindestens zwei Landplättchen geben. Die Landplättchen werden alle zusammenhängend sein (dh es gibt nur eine Insel). Die Wasserplättchen werden auch zusammenhängend sein (dh es gibt keine Seen). Der äußere Rand des Gitters besteht aus Wasserplättchen. Landplättchen werden nicht diagonal verbunden, dh Sie werden niemals so etwas sehen
....
.#..
..#.
....
Ausgabe
Ihr Code muss Ausgang das gleiche Raster, mit zwei Hütte Standorten auf sie markiert. In den folgenden Beispielen sind die Hüttenpositionen mit einem X gekennzeichnet. Sie können jedoch jedes Zeichen ersetzen, sofern es sich von Ihren Land- und Wasserzeichen unterscheidet.
Die Hüttenpositionen müssen aus zwei Landplättchen bestehen, die so gewählt sind, dass der Abstand zwischen ihnen maximiert wird . Wir definieren die Gehstrecke als die Länge des kürzesten Weges zwischen den beiden Punkten, der sich vollständig an Land befindet. Landplättchen werden horizontal oder vertikal nebeneinander, aber nicht diagonal betrachtet.
Eine mögliche Lösung für die obige Insel:
...........
...X#......
..#####....
..#######..
.#########.
...#######.
...#####.X.
....####...
...........
Die Entfernung zwischen diesen beiden Punkten beträgt 11, was die größte Entfernung zwischen zwei Punkten auf dieser Insel darstellt. Es gibt noch eine andere Lösung mit Abstand 11:
...........
...##......
..X####....
..#######..
.#########.
...#######.
...#####.X.
....####...
...........
Einzelheiten
Ihre Lösung kann ein vollständiges Programm oder eine Funktion sein . Alle Standardeingabe- und -ausgabemethoden sind zulässig.
Ihre Eingabe und Ausgabe kann eine mehrzeilige Zeichenfolge, eine Liste von Zeichenfolgen oder ein 2D-Array / eine verschachtelte Liste von Zeichen / Einzelzeichenfolgen sein. Ihre Ausgabe kann (optional) eine einzelne nachgestellte Zeile enthalten. Wie oben erwähnt, können Sie drei verschiedene Zeichen anstelle von verwenden #.X
(bitte geben Sie in Ihrer Übermittlung an, welche Zeichen Sie verwenden).
Testfälle
A. Inseln mit einzigartigen Hüttenplätzen:
....
.##.
....
....
.XX.
....
......
......
..##..
...#..
......
......
......
......
..X#..
...X..
......
......
........
.#####..
.##..##.
.#..###.
.##..##.
........
........
.#####..
.##..##.
.#..###.
.#X..#X.
........
.........
.#####.#.
.#...#.#.
.#.###.#.
.#.....#.
.#######.
.........
.........
.#####.X.
.#...#.#.
.#.X##.#.
.#.....#.
.#######.
.........
B. Beispiel einer Insel mit mehreren möglichen Lösungen:
........
....##..
...####.
..###...
.#####..
.#####..
..##....
........
Mögliche Ausgaben:
........
....#X..
...####.
..###...
.#####..
.X####..
..##....
........
........
....#X..
...####.
..###...
.#####..
.#####..
..X#....
........
........
....##..
...###X.
..###...
.#####..
.X####..
..##....
........
........
....##..
...###X.
..###...
.#####..
.#####..
..X#....
........
Das ist Code-Golf : Der kürzeste Code in jeder Sprache gewinnt.