Contexte
Vous êtes l'apprenti d'un puissant sorcier et votre maître élabore actuellement un sortilège pour créer un labyrinthe interdimensionnel dans lequel piéger ses ennemis. Il souhaite que vous programmiez son ordinateur alimenté à la vapeur pour analyser les configurations possibles. La programmation de cette machine diabolique est très dangereuse, vous voulez donc garder le code aussi court que possible.
Contribution
Votre entrée est une grille bidimensionnelle de points .
et de hachages #
, représentant des espaces vides et des murs, présentée sous la forme d'une chaîne délimitée par des lignes. Il y en aura toujours au moins un .
et un #
et vous pourrez décider s'il y a ou non une nouvelle ligne.
Cette grille est le modèle d'un labyrinthe infini, qui consiste à aligner une infinité de copies de la grille les unes à côté des autres. Le labyrinthe est divisé en cavités , qui sont des composants connectés d'espaces vides (les espaces adjacents en diagonale ne sont pas connectés). Par exemple, la grille
##.####
...##..
#..#..#
####..#
##...##
résultats dans le labyrinthe suivant (continué indéfiniment dans toutes les directions):
##.######.######.####
...##.....##.....##..
#..#..##..#..##..#..#
####..#####..#####..#
##...####...####...##
##.######.######.####
...##.....##.....##..
#..#..##..#..##..#..#
####..#####..#####..#
##...####...####...##
##.######.######.####
...##.....##.....##..
#..#..##..#..##..#..#
####..#####..#####..#
##...####...####...##
Ce labyrinthe contient une cavité de surface infinie. D'autre part, ce plan aboutit à un labyrinthe composé uniquement de cavités finies:
##.####
##..###
####...
..####.
#..####
Sortie
Votre sortie doit être une valeur de vérité si le labyrinthe contient une cavité infinie, sinon une valeur de fausseté. Notez que le labyrinthe peut contenir des cavités finies et infinies; dans ce cas, le résultat doit être la vérité.
Règles
Vous pouvez écrire un programme complet ou une fonction. Le nombre d'octets le plus faible gagne et les failles standard sont interdites.
Cas de test supplémentaires
Cavités infinies:
.#
#.#
...
#.#
#.###.#.###.#
#.#...#...#.#
#.#.#####.#.#
..#.#...#.#..
###.#.#.#.###
#...#.#.#...#
#.###.#.###.#
##.###
#..###
..##..
###..#
##..##
..#..#..#..#..#..#
.#..#..#..#..#..#.
#..#..#..#..#..#..
#.####.###.###.####
#...#..#...###..###
###.#..#.######..##
....####.#######...
###..###...########
##########.##....##
..###......##.##...
#.........##..#####
###########..###..#
#...........####..#
#.###########.##..#
#.##....##.....####
#.####.###.###.####
Cavités finies:
###
#.#
###
.#
#.
####
.#..
####
#.#.#
..#..
#####
..#..
#.#.#
#.#.#.#.#.#
..#...#.#..
###.###.###
..#.#......
#.#.#######
#.#.......#
#.#######.#
#.#.....#.#
#.#.#.#.#.#
##....#####
.#..#...##.
.##.#..#...
..###.###..
#..##.#####
#...##....#
#.#.#####.#
###..####.#
....####...
###...#####
###....##.#########
####...##....#...##
..####.#######.###.
....##..........##.
###..#####.#..##...
####..#..#....#..##
..###.####.#.#..##.
..###...#....#.#...
..####..##.###...##
#.####.##..#####.##
####...##.#####..##
###########
........#..
#########.#
..........#
.##########
.#.........
##.########
...#.......
.
et un #
dans l'entrée.