Biorąc pod uwagę wejście „drogi” w sztuce ASCII, wyjmij drogę z oznaczonymi wszystkimi ślepymi zaułkami.
To jest droga:
########.....######..#..###
#......#######....#..#..#.#
#.##......#...#####..#..###
#..#####..#....#..#######.#
#......#...#####.....##...#
#..###.#...#...###...#..###
##########.#..#..##..#.##.#
..#......#.######.#..#.#.#.
..#......#.#..#.#.#..#.#.#.
..######.###..##..#########
To droga z ślepymi zaułkami oznaczonymi literą X:
########.....######..X..###
#......#######....#..X..#.#
#.XX......X...X####..X..###
#..XXXXX..X....#..#######.#
#......X...#####.....##...#
#..###.X...#...###...#..###
##########.#..X..##..#.##.X
..X......#.#XXXXX.#..#.#.X.
..X......#.#..X.X.#..#.#.X.
..XXXXXX.###..XX..######XXX
Ślepy zaułek jest zdefiniowany jako dowolny płytki drogi że granice n inne płytki drogowe, co najmniej n-1 które są uważane za martwe końce już od tej reguły. „Granice” są w czterech głównych kierunkach, więc płytki graniczące po przekątnej nie liczą się.
Zasada ta jest stosowana wielokrotnie, ponieważ nowo utworzone ślepe zaułki mogą same tworzyć więcej ślepych zaułków . Należy również pamiętać, że każdy kafelek drogi, który graniczy tylko z jednym innym kafelkiem drogi, jest uważany za ślepy zaułek przy pierwszym zastosowaniu reguły.
Dane wejściowe i wyjściowe mogą być albo pojedynczym łańcuchem (z wierszami oddzielonymi dowolnym znakiem, który nie jest #lub .), albo tablicą / listą itp. Jeśli twój język to obsługuje, możesz również pobierać dane wejściowe, a każdy wiersz jest argumentem funkcji.
Możesz przyjąć następujące założenia dotyczące danych wejściowych:
Zawsze będzie przynajmniej jedna „pętla” - grupa
#znaków, którą można śledzić w nieskończoność. (W przeciwnym razie każdy kafelek stałby się ślepym zaułkiem.)Oznacza to, że wejście będzie zawsze 2 × 2 lub większe, ponieważ najmniejsza pętla to:
## ##(Nawiasem mówiąc, powinno być generowane bez zmian.)
Wszystkie
#postacie zostaną połączone. Oznacza to, że jeśli wykonasz wypełnienie powodziowe na którymkolwiek#z nich, wpłynie to na wszystkie z nich.
Ponieważ tak jest code-golf , wygra najkrótszy kod w bajtach.
Powyższy przykład i mała siatka 2 × 2 mogą być użyte jako przypadki testowe (w tym wyzwaniu nie ma zbyt wielu przypadków brzegowych).