Questo è il secondo di una serie di sfide Island Golf. Sfida precedente
Due eremiti sono arrivati su un'isola deserta. Poiché sono venuti in cerca di solitudine, desiderano vivere il più lontano possibile l'uno dall'altro. Dove dovrebbero costruire le loro capanne per massimizzare la distanza a piedi tra loro?
Ingresso
Il tuo input sarà una griglia rettangolare composta da due caratteri, che rappresentano terra e acqua. Negli esempi seguenti, la terra è #
e l'acqua è .
, ma puoi sostituire due caratteri distinti che desideri.
...........
...##......
..#####....
..#######..
.#########.
...#######.
...#####.#.
....####...
...........
Ci saranno sempre almeno due tessere terra. Le tessere terra saranno tutte contigue (cioè c'è solo un'isola). Le tessere dell'acqua saranno anche contigue (cioè non ci sono laghi). Il bordo esterno della griglia sarà costituito da piastrelle d'acqua. Le tessere terra non saranno collegate in diagonale: cioè non vedrai mai qualcosa di simile
....
.#..
..#.
....
Produzione
Il codice deve generare la stessa griglia, con due posizioni di capanna contrassegnate su di essa. Negli esempi seguenti, le posizioni delle capanne sono contrassegnate con X, ma puoi sostituire qualsiasi personaggio purché sia distinto dai tuoi personaggi terra e acqua.
Le posizioni delle capanne devono essere due tessere terra, scelte in modo da massimizzare la distanza percorribile tra loro. Definiamo la distanza percorribile come la lunghezza del percorso più breve, interamente a terra, tra i due punti. Le tessere terra sono considerate adiacenti in orizzontale o in verticale, ma non in diagonale.
Una possibile soluzione per l'isola sopra:
...........
...X#......
..#####....
..#######..
.#########.
...#######.
...#####.X.
....####...
...........
La distanza a piedi tra questi due punti è 11, che è la distanza massima tra due punti qualsiasi su quest'isola. Esiste un'altra soluzione distance-11:
...........
...##......
..X####....
..#######..
.#########.
...#######.
...#####.X.
....####...
...........
Dettagli
La tua soluzione può essere un programma completo o una funzione . Uno dei metodi di input e output predefiniti è accettabile.
L'input e l'output possono essere una stringa su più righe, un elenco di stringhe o un array 2D / un elenco nidificato di caratteri / stringhe a carattere singolo. L'output potrebbe (facoltativamente) avere una sola riga finale nuova. Come accennato in precedenza, è possibile utilizzare tre caratteri distinti al posto di #.X
(specificare nella presentazione quali caratteri si stanno utilizzando).
Casi test
A. Isole con posizioni di capanne uniche:
....
.##.
....
....
.XX.
....
......
......
..##..
...#..
......
......
......
......
..X#..
...X..
......
......
........
.#####..
.##..##.
.#..###.
.##..##.
........
........
.#####..
.##..##.
.#..###.
.#X..#X.
........
.........
.#####.#.
.#...#.#.
.#.###.#.
.#.....#.
.#######.
.........
.........
.#####.X.
.#...#.#.
.#.X##.#.
.#.....#.
.#######.
.........
B. Esempio di isola con molteplici possibili soluzioni:
........
....##..
...####.
..###...
.#####..
.#####..
..##....
........
Possibili uscite:
........
....#X..
...####.
..###...
.#####..
.X####..
..##....
........
........
....#X..
...####.
..###...
.#####..
.#####..
..X#....
........
........
....##..
...###X.
..###...
.#####..
.X####..
..##....
........
........
....##..
...###X.
..###...
.#####..
.#####..
..X#....
........
C. Caso di prova di grandi dimensioni come sostanza
Questo è code-golf : vince il codice più corto in ogni lingua.