ASCIIアート「道路」の入力が与えられると、すべての行き止まりにラベルが付けられた道路を出力します。
これは道です:
########.....######..#..###
#......#######....#..#..#.#
#.##......#...#####..#..###
#..#####..#....#..#######.#
#......#...#####.....##...#
#..###.#...#...###...#..###
##########.#..#..##..#.##.#
..#......#.######.#..#.#.#.
..#......#.#..#.#.#..#.#.#.
..######.###..##..#########
これは、文字でラベル付けされた行き止まりの道路Xです:
########.....######..X..###
#......#######....#..X..#.#
#.XX......X...X####..X..###
#..XXXXX..X....#..#######.#
#......X...#####.....##...#
#..###.X...#...###...#..###
##########.#..X..##..#.##.X
..X......#.#XXXXX.#..#.#.X.
..X......#.#..X.X.#..#.#.X.
..XXXXXX.###..XX..######XXX
デッドエンドは、任意の道路タイルとして定義される境界nは少なくとも他の道路タイル、N-1であると考えられるその行き止まりをこのルールによって既に。「境界線」は4つの基本方向であるため、斜めに隣接するタイルはカウントされません。
このルールは繰り返し適用されます。新しく作成された行き止まり自体が、さらに行き止まりを作成できるためです。また、他の1つの道路タイルのみに接する道路タイルは、ルールが初めて適用されたときに行き止まりと見なされることに注意してください。
入力と出力は、単一の文字列(#または以外の文字で区切られた行を持つ.)または配列/リスト/などのいずれかです。言語がサポートしている場合は、関数の引数として各行を入力することもできます。
入力について次のことを想定できます。
常に少なくとも1つの「ループ」、つまり
#無限に追跡できる文字のグループがあります。(そうしないと、すべてのタイルが行き止まりになります。)これは、最小ループが次のようになるため、入力が常に2×2以上になることを意味します。
## ##(ちなみに、変更せずに出力する必要があります。)
すべての
#キャラクターが接続されます。つまり、any#で塗りつぶしを実行すると、それらすべてが影響を受けます。
これはcode-golfであるため、バイト単位の最短コードが優先されます。
上記の例と小さな2×2グリッドは、テストケースとして使用できます(この課題でカバーするエッジケースは多くありません)。