Це другий у серії викликів Island Golf. Попередній виклик
Два пустельники прибули на безлюдний острів. Оскільки вони прийшли шукати усамітнення, вони бажають жити якнайдалі один від одного. Де вони повинні будувати свої хати, щоб максимально збільшити відстань між ними?
Вхідні дані
Вашим входом буде прямокутна сітка, що складається з двох символів, що представляють землю та воду. У наведених нижче прикладах земля є, #
а вода є .
, але ви можете замінити будь-які два символи, які ви хочете.
...........
...##......
..#####....
..#######..
.#########.
...#######.
...#####.#.
....####...
...........
Завжди буде як мінімум дві наземні плитки. Усі суходольні плитки будуть суміжними (тобто є лише один острів). Водяні плитки також будуть суміжними (тобто озер немає). Зовнішня межа сітки - це водопровідна плитка. Земляна плитка не буде з'єднана по діагоналі: тобто ви ніколи не побачите чогось подібного
....
.#..
..#.
....
Вихідні дані
Ваш код повинен виводити ту саму сітку з двома місцями хат на ній. У наведених нижче прикладах місця розташування хат позначені символом X, але ви можете замінити будь-який символ, якщо він відрізняється від ваших знаків суші та води.
Місце розташування хатин повинно бути двома наземними плитками, підібраними так, щоб максимально збільшити відстань між ними. Ми визначаємо пішохідну відстань як довжину найкоротшого шляху, цілком по суші, між двома точками. Земельні плитки вважаються суміжними по горизонталі або вертикалі, але не по діагоналі.
Можливе рішення для вищевказаного острова:
...........
...X#......
..#####....
..#######..
.#########.
...#######.
...#####.X.
....####...
...........
Відстань між цими двома точками становить 11, що є найбільшою відстані між двома точками на цьому острові. Є ще одне рішення-11:
...........
...##......
..X####....
..#######..
.#########.
...#######.
...#####.X.
....####...
...........
Деталі
Ваше рішення може бути повноцінною програмою або функцією . Будь-який із методів введення та виводу за замовчуванням є прийнятним.
Вхід і вихід можуть бути багаторядковим рядком, списком рядків або 2D-масивом / вкладеним списком символів / односимвольних рядків. Ваш висновок може (необов'язково) мати один зворотний новий рядок. Як було сказано вище, ви можете використовувати будь-які три різних символи замість #.X
(будь-ласка, вкажіть у поданні, які символи ви використовуєте).
Тестові справи
А. Острови з унікальними місцями розміщення хат:
....
.##.
....
....
.XX.
....
......
......
..##..
...#..
......
......
......
......
..X#..
...X..
......
......
........
.#####..
.##..##.
.#..###.
.##..##.
........
........
.#####..
.##..##.
.#..###.
.#X..#X.
........
.........
.#####.#.
.#...#.#.
.#.###.#.
.#.....#.
.#######.
.........
.........
.#####.X.
.#...#.#.
.#.X##.#.
.#.....#.
.#######.
.........
Б. Приклад острова з кількома можливими рішеннями:
........
....##..
...####.
..###...
.#####..
.#####..
..##....
........
Можливі виходи:
........
....#X..
...####.
..###...
.#####..
.X####..
..##....
........
........
....#X..
...####.
..###...
.#####..
.#####..
..X#....
........
........
....##..
...###X.
..###...
.#####..
.X####..
..##....
........
........
....##..
...###X.
..###...
.#####..
.#####..
..X#....
........
C. Великий тестовий випадок як суть
Це код-гольф : виграє найкоротший код на кожній мові.