fundo
Você é aprendiz de um poderoso mago, e seu mestre está desenvolvendo um feitiço para criar um labirinto interdimensional para prender seus inimigos. Ele quer que você programe seu computador a vapor para analisar os possíveis layouts. A programação desta máquina diabólica é altamente perigosa, portanto, você deve manter o código o mais curto possível.
Entrada
Sua entrada é uma grade bidimensional de pontos .
e hashes #
, significando espaço e paredes vazios, dados como uma sequência delimitada por nova linha. Sempre haverá pelo menos um .
e um #
, e você pode decidir se há uma nova linha à direita ou não.
Essa grade é o modelo de um labirinto infinito, que é feito alinhando infinitamente muitas cópias da grade uma da outra. O labirinto é dividido em cavidades , que são componentes conectados de espaços vazios (espaços adjacentes na diagonal não são conectados). Por exemplo, a grade
##.####
...##..
#..#..#
####..#
##...##
resulta no seguinte labirinto (continuado infinitamente em todas as direções):
##.######.######.####
...##.....##.....##..
#..#..##..#..##..#..#
####..#####..#####..#
##...####...####...##
##.######.######.####
...##.....##.....##..
#..#..##..#..##..#..#
####..#####..#####..#
##...####...####...##
##.######.######.####
...##.....##.....##..
#..#..##..#..##..#..#
####..#####..#####..#
##...####...####...##
Este labirinto em particular contém uma cavidade de área infinita. Por outro lado, esse projeto resulta em um labirinto com apenas cavidades finitas:
##.####
##..###
####...
..####.
#..####
Saída
Sua saída será um valor verdadeiro se o labirinto contiver uma cavidade infinita e um valor falso se não. Observe que o labirinto pode conter cavidades finitas e infinitas; nesse caso, a saída deve ser verdadeira.
Regras
Você pode escrever um programa completo ou uma função. A menor contagem de bytes vence e as brechas padrão não são permitidas.
Casos de teste adicionais
Cavidades infinitas:
.#
#.#
...
#.#
#.###.#.###.#
#.#...#...#.#
#.#.#####.#.#
..#.#...#.#..
###.#.#.#.###
#...#.#.#...#
#.###.#.###.#
##.###
#..###
..##..
###..#
##..##
..#..#..#..#..#..#
.#..#..#..#..#..#.
#..#..#..#..#..#..
#.####.###.###.####
#...#..#...###..###
###.#..#.######..##
....####.#######...
###..###...########
##########.##....##
..###......##.##...
#.........##..#####
###########..###..#
#...........####..#
#.###########.##..#
#.##....##.....####
#.####.###.###.####
Cavidades finitas:
###
#.#
###
.#
#.
####
.#..
####
#.#.#
..#..
#####
..#..
#.#.#
#.#.#.#.#.#
..#...#.#..
###.###.###
..#.#......
#.#.#######
#.#.......#
#.#######.#
#.#.....#.#
#.#.#.#.#.#
##....#####
.#..#...##.
.##.#..#...
..###.###..
#..##.#####
#...##....#
#.#.#####.#
###..####.#
....####...
###...#####
###....##.#########
####...##....#...##
..####.#######.###.
....##..........##.
###..#####.#..##...
####..#..#....#..##
..###.####.#.#..##.
..###...#....#.#...
..####..##.###...##
#.####.##..#####.##
####...##.#####..##
###########
........#..
#########.#
..........#
.##########
.#.........
##.########
...#.......
.
e um #
na entrada.