Il s'agit du deuxième d'une série de défis Island Golf. Défi précédent
Deux ermites sont arrivés sur une île déserte. Depuis qu'ils sont venus chercher la solitude, ils souhaitent vivre le plus loin possible les uns des autres. Où devraient-ils construire leurs huttes pour maximiser la distance de marche entre eux?
Contribution
Votre entrée sera une grille rectangulaire composée de deux caractères, représentant la terre et l'eau. Dans les exemples ci-dessous, la terre est #
et l'eau l'est .
, mais vous pouvez remplacer les deux caractères distincts que vous souhaitez.
...........
...##......
..#####....
..#######..
.#########.
...#######.
...#####.#.
....####...
...........
Il y aura toujours au moins deux tuiles de terrain. Les tuiles de terre seront toutes contiguës (c'est-à-dire qu'il n'y a qu'une seule île). Les tuiles d'eau seront également contiguës (c'est-à-dire qu'il n'y a pas de lacs). La bordure extérieure de la grille sera toutes des tuiles d'eau. Les tuiles de terre ne seront pas connectées en diagonale: c'est-à-dire que vous ne verrez jamais quelque chose comme
....
.#..
..#.
....
Production
Votre code doit sortir la même grille, avec deux emplacements de cabane marqués dessus. Dans les exemples ci-dessous, les emplacements des cabanes sont marqués d'un X, mais vous pouvez remplacer n'importe quel caractère tant qu'il est distinct de vos personnages terrestres et aquatiques.
Les emplacements des cabanes doivent être constitués de deux tuiles terrestres, choisies de manière à maximiser la distance de marche entre elles. Nous définissons la distance de marche comme la longueur du chemin le plus court, entièrement terrestre, entre les deux points. Les tuiles de terre sont considérées adjacentes horizontalement ou verticalement, mais pas en diagonale.
Une solution possible pour l'île ci-dessus:
...........
...X#......
..#####....
..#######..
.#########.
...#######.
...#####.X.
....####...
...........
La distance de marche entre ces deux points est de 11, ce qui est la plus grande distance entre deux points sur cette île. Il existe une autre solution à distance 11:
...........
...##......
..X####....
..#######..
.#########.
...#######.
...#####.X.
....####...
...........
Détails
Votre solution peut être un programme complet ou une fonction . Toutes les méthodes d'entrée et de sortie par défaut sont acceptables.
Vos entrées et sorties peuvent être une chaîne multiligne, une liste de chaînes ou un tableau 2D / liste imbriquée de caractères / chaînes à un seul caractère. Votre sortie peut (facultativement) avoir une seule nouvelle ligne de fin. Comme mentionné ci-dessus, vous pouvez utiliser trois caractères distincts à la place de #.X
(veuillez spécifier dans votre soumission les caractères que vous utilisez).
Cas de test
A. Îles avec des emplacements de cabane uniques:
....
.##.
....
....
.XX.
....
......
......
..##..
...#..
......
......
......
......
..X#..
...X..
......
......
........
.#####..
.##..##.
.#..###.
.##..##.
........
........
.#####..
.##..##.
.#..###.
.#X..#X.
........
.........
.#####.#.
.#...#.#.
.#.###.#.
.#.....#.
.#######.
.........
.........
.#####.X.
.#...#.#.
.#.X##.#.
.#.....#.
.#######.
.........
B. Exemple d'une île avec plusieurs solutions possibles:
........
....##..
...####.
..###...
.#####..
.#####..
..##....
........
Sorties possibles:
........
....#X..
...####.
..###...
.#####..
.X####..
..##....
........
........
....#X..
...####.
..###...
.#####..
.#####..
..X#....
........
........
....##..
...###X.
..###...
.#####..
.X####..
..##....
........
........
....##..
...###X.
..###...
.#####..
.#####..
..X#....
........
C. Grand cas de test comme un Gist
C'est le code-golf : le code le plus court dans chaque langue gagne.