Это второй из серии испытаний Island Golf. Предыдущий вызов
Два отшельника прибыли на необитаемый остров. Поскольку они пришли искать уединения, они хотят жить как можно дальше друг от друга. Где они должны строить свои хижины, чтобы максимизировать расстояние между ними?
вход
Ваш ввод будет прямоугольной сеткой, состоящей из двух символов, представляющих землю и воду. В приведенных ниже примерах земля есть, #
а вода есть .
, но вы можете заменить любые два разных символа по вашему желанию.
...........
...##......
..#####....
..#######..
.#########.
...#######.
...#####.#.
....####...
...........
Там всегда будет как минимум две плитки земли. Плитки земли все будут смежными (то есть есть только один остров). Водяные плитки также будут смежными (т.е. там нет озер). Внешняя граница сетки будет водяной плиткой. Плитки земли не будут связаны по диагонали: то есть вы никогда не увидите ничего подобного
....
.#..
..#.
....
Выход
Ваш код должен выводить ту же сетку с двумя отмеченными местоположениями хижины . В приведенных ниже примерах местоположения хижины помечены знаком X, но вы можете заменить любого персонажа, если он отличается от ваших символов земли и воды.
Места хижины должны быть двумя плитками земли, выбранными таким образом, чтобы максимизировать расстояние между ними. Мы определяем расстояние ходьбы как длину кратчайшего пути, полностью на суше, между двумя точками. Наземные плитки считаются смежными по горизонтали или вертикали, но не по диагонали.
Возможное решение для вышеуказанного острова:
...........
...X#......
..#####....
..#######..
.#########.
...#######.
...#####.X.
....####...
...........
Пешком между этими двумя точками является 11, что является наибольшим расстоянием между любыми двумя точками на этом острове. Существует еще одно решение дистанции 11:
...........
...##......
..X####....
..#######..
.#########.
...#######.
...#####.X.
....####...
...........
Детали
Ваше решение может быть полной программой или функцией . Любой из методов ввода и вывода по умолчанию является приемлемым.
Ваш ввод и вывод может быть многострочной строкой, списком строк или двумерным массивом / вложенным списком символов / односимвольных строк. Ваш вывод может (опционально) иметь один завершающий перевод строки. Как упоминалось выше, вы можете использовать любые три различных символа вместо #.X
(пожалуйста, укажите в своем представлении, какие символы вы используете).
Контрольные примеры
А. Острова с уникальными местами размещения в хижине:
....
.##.
....
....
.XX.
....
......
......
..##..
...#..
......
......
......
......
..X#..
...X..
......
......
........
.#####..
.##..##.
.#..###.
.##..##.
........
........
.#####..
.##..##.
.#..###.
.#X..#X.
........
.........
.#####.#.
.#...#.#.
.#.###.#.
.#.....#.
.#######.
.........
.........
.#####.X.
.#...#.#.
.#.X##.#.
.#.....#.
.#######.
.........
Б. Пример острова с несколькими возможными решениями:
........
....##..
...####.
..###...
.#####..
.#####..
..##....
........
Возможные выводы:
........
....#X..
...####.
..###...
.#####..
.X####..
..##....
........
........
....#X..
...####.
..###...
.#####..
.#####..
..X#....
........
........
....##..
...###X.
..###...
.#####..
.X####..
..##....
........
........
....##..
...###X.
..###...
.#####..
.#####..
..X#....
........
Это код-гольф : выигрывает самый короткий код на каждом языке.