これは、一連のアイランドゴルフチャレンジの2番目です。前の挑戦
2つの隠者が砂漠の島に到着しました。彼らは孤独を求めてやって来たので、彼らはお互いにできるだけ遠くに住みたいと思っています。彼らは彼らの間の歩行距離を最大にするために彼らの小屋をどこに建てるべきですか?
入力
入力は、土地と水を表す2つの文字で構成される長方形のグリッドになります。以下の例では、土地はで#
あり、水はです.
。ただし、任意の2つの異なるキャラクターを使用できます。
...........
...##......
..#####....
..#######..
.#########.
...#######.
...#####.#.
....####...
...........
常に少なくとも2つの土地タイルがあります。土地のタイルはすべて連続しています(つまり、島は1つだけです)。水タイルも連続しています(つまり、湖はありません)。グリッドの外側の境界線はすべて水タイルになります。ランドタイルは斜めに接続されません。つまり、次のようなものは表示されません。
....
.#..
..#.
....
出力
コードは、2つの小屋の場所がマークされた同じグリッドを出力する必要があります。以下の例では、小屋の場所にXのマークが付けられていますが、土地や水のキャラクターと区別できる限り、任意のキャラクターに置き換えることができます。
小屋の場所は、それらの間の歩行距離を最大化するように選択された2つの土地タイルでなければなりません。歩行距離は、2つのポイント間の完全な陸上の最短経路の長さとして定義されます。ランドタイルは、水平方向または垂直方向に隣接していると見なされますが、斜めではありません。
上記の島の可能な解決策:
...........
...X#......
..#####....
..#######..
.#########.
...#######.
...#####.X.
....####...
...........
これらの2つのポイント間の歩行距離は11で、この島の任意の2つのポイント間の最大距離です。別のdistance-11ソリューションがあります。
...........
...##......
..X####....
..#######..
.#########.
...#######.
...#####.X.
....####...
...........
詳細
あなたの解決策は、完全なプログラムまたは機能かもしれません。いずれかのデフォルトの入力と出力の方法が許容されています。
入力と出力は、複数行の文字列、文字列のリスト、または2D配列/文字のネストされたリスト/単一文字の文字列です。出力には、(オプションで)単一の末尾改行がある場合があります。上記のように、代わりに3つの異なる文字#.X
を使用できます(使用する文字を提出時に指定してください)。
テストケース
A.ユニークな小屋の配置がある島:
....
.##.
....
....
.XX.
....
......
......
..##..
...#..
......
......
......
......
..X#..
...X..
......
......
........
.#####..
.##..##.
.#..###.
.##..##.
........
........
.#####..
.##..##.
.#..###.
.#X..#X.
........
.........
.#####.#.
.#...#.#.
.#.###.#.
.#.....#.
.#######.
.........
.........
.#####.X.
.#...#.#.
.#.X##.#.
.#.....#.
.#######.
.........
B.複数の可能な解決策がある島の例:
........
....##..
...####.
..###...
.#####..
.#####..
..##....
........
可能な出力:
........
....#X..
...####.
..###...
.#####..
.X####..
..##....
........
........
....#X..
...####.
..###...
.#####..
.#####..
..X#....
........
........
....##..
...###X.
..###...
.#####..
.X####..
..##....
........
........
....##..
...###X.
..###...
.#####..
.#####..
..X#....
........
これはcode-golfです。各言語で最も短いコードが優先されます。