Вызов
Напишите программу / функцию, которая принимает «изображение» и выводит лабиринт изображения, сформированный из этого изображения.
вход
Ваша программа должна принимать два аргумента:
- Я, образ, чтобы сформировать лабиринт из
- S, логическое значение, указывающее, отображать или нет решение для лабиринта
Мне дается в следующем виде:
.......
.#####.
.#####.
#######
.#####.
.#####.
.......
где #
s - ячейки, которые должны быть включены в путь решения, а .
s - ячейки, которые должны быть исключены. Вы можете поменять местами буквы .
«s», #
«s» и «newline» с любым персонажем по вашему выбору, если они отличаются друг от друга. В качестве альтернативы вы можете принять фактическое растровое изображение входного изображения.
Выход
Ваш получающийся лабиринт должен быть в следующей форме:
###############
# #
# ### ####### #
# #.........# #
# #.#######.# #
# #.#.......# #
###.#.#########
....#.#........
#####.#.#######
# ...#..... #
# #.#######.# #
# #.........# #
# ####### ### #
# # # #
###############
где #
s обозначает стены, .
s обозначает части пути, которые являются частью решения, а пробелы являются путями, исключенными из решения. В .
«s могут быть заменены пробелами , если S ложно. Опять же, символы могут быть заменены другими символами по вашему выбору, или вы можете вывести фактическое растровое изображение лабиринта с выделенным решением.
дополнительные детали
- Пути должны быть шириной в одну ячейку (путь не может иметь гигантский пул пустого пространства)
- Лабиринт не должен содержать петель
- Лабиринт должен быть полностью соединен (все ячейки должны быть доступны от входа / выхода)
- Лабиринт должен быть окружен стенами (если только не вход / выход)
- Путь решения не должен включать тупики
- В лабиринте должно быть ровно 1 вход и 1 выход
- Вход и выход должны быть выровнены по краю сетки и прилегать к ячейке, включенной в путь решения
- Вы можете выбрать, где находятся вход и выход
- Вы можете предположить, что правильный путь может быть сформирован из данного входного изображения
(Добавлено для пояснения) На диаграмме ниже показано, как путь решения соотносится с входным изображением:
Input (I): | Output: | Corresponding Cells:
| | (@'s denote #'s from I)
| |
....... | ############### | ###############
.#####. | # # | # #
.#####. | # ### ####### # | # ### ####### #
####### | # #.........# # | # #@.@.@.@.@# #
.#####. | # #.#######.# # | # #.#######.# #
.#####. | # #.#.......# # | # #@#@.@.@.@# #
....... | ###.#.######### | ###.#.#########
| ....#.#........ | .@.@#@#@.@.@.@.
| #####.#.####### | #####.#.#######
| # ...#..... # | # @.@#@.@.@ #
| # #.#######.# # | # #.#######.# #
| # #.........# # | # #@.@.@.@.@# #
| # ####### ### # | # ####### ### #
| # # # # | # # # #
| ############### | ###############
| |
Тестовые случаи
Пример лейки из Википедии :
Входные данные:
..................
..................
.......####.......
......##..##......
.....##....##....#
.....#......#...##
.#############.##.
##..############..
#...###########...
#...##########....
#...##########....
#...##########....
#...##########....
....##########....
....##########....
....##########....
..................
..................
Выход (S = false):
#####################################
# # # # # # #
# ### ### ### # # ##### ### ### ### #
# # # # # # # # # # #
# ### # ##### # ########### # ### # #
# # # # # # # # #
# # # ### ##### # ### ### # ### ### #
# # # # # # # # # # # # #
# ### # ##### ##### ### ##### # # ###
# # # # # # # # #
### ####### ### ### # ### ##### ### #
# # # # # # # # # # #
# ### ##### # ### ####### # # # # # #
# # # # # # # #
# # ##### ############# ### ### ### #
# # # # # # # # # #
# ### # ####### # ### ### # # ### # #
# # # # # # # # # #
# # # ### ######### # # ##### # #####
# # # # # # # # # # # #
# ##### # # ##### # ##### # # ### # #
# # # # # # # # # # #
# ### ### ### # ### # ##### ####### #
# # # # # # # # # #
# # # # ####### # ### # ##### # ### #
# # # # # # # # # # #
### # # # # # ############# # ### # #
# # # # # # # # # # #
##### # # ##### ####### # ### ##### #
# # # # # # # # #
##### # # # # ####### # ### #########
# # # # # #
# ### ######### ############# # #####
# # # # # # # # #
# # ######### # ####### ####### ### #
# # # #
#####################################
Выход (S = true):
#####################################
# # # # # # #
# ### ### ### # # ##### ### ### ### #
# # # # # # # # # # #
# ### # ##### # ########### # ### # #
# # # #....... # # # # #
# # # ### #####.# ###.### # ### ### #
# # # # #...# # #...# # # # #
# ### # #####.##### ###.##### # # ###
# # # ...# # #... # # #..
### #######.### ### # ###.##### ###.#
# # #.# # # #.# # #...#
# ### #####.# ### #######.# # # #.# #
# #.......#.............#...# #...# #
# #.#####.#############.###.###.### #
#...# #.......#.....#...#.#...# # #
#.### # #######.#.###.###.#.#.### # #
#.# # # .......#...#.#...#...# #
#.# # ###.#########.#.#.##### # #####
#.# # #.#.......#.#...#...# # # #
#.##### #.#.#####.#.#####.#.# ### # #
#. #.#...#...#.#.....#.# # # #
#.### ###.###.#.###.#.#####.####### #
#. # # #.....#.#...#.#..... # #
#.# # # #######.#.###.#.##### # ### #
..# # # #...#...#.....#.....# # # #
### # # #.#.#.#############.# ### # #
# # # #.#...#.........#...# # # #
##### # #.#####.#######.#.### ##### #
# # #.#...#.......#.#...# #
##### # #.#.#.#######.#.###.#########
# # ...#.........#..... # #
# ### ######### ############# # #####
# # # # # # # # #
# # ######### # ####### ####### ### #
# # # #
#####################################
Пример растрового изображения (тот же лабиринт, что и выше):