- 23, Oct 2024
- #1
Испытание
Напишите программу/функцию, которая принимает «изображение» и выводит картинка лабиринт сформированный из этого образа.
Вход
Ваша программа должна принимать два аргумента:
- Я, образ, из которого можно сформировать лабиринт
- S — логическое значение, определяющее, отображать или нет решение лабиринта.
I задается в следующем виде:
##################################### # # # # # # # # ### ### ### # # ##### ### ### ### # # # # # # # # # # # # # ### # ##### # ########### # ### # # # # # #....... # # # # # # # # ### #####.# ###.### # ### ### # # # # # #...# # #...# # # # # # ### # #####.##### ###.##### # # ### # # # ...# # #... # # #.. ### #######.### ### # ###.##### ###.# # # #.# # # #.# # #...# # ### #####.# ### #######.# # # #.# # # #.......#.............#...# #...# # # #.#####.#############.###.###.### # #...# #.......#.....#...#.#...# # # #.### # #######.#.###.###.#.#.### # # #.# # # .......#...#.#...#...# # #.# # ###.#########.#.#.##### # ##### #.# # #.#.......#.#...#...# # # # #.##### #.#.#####.#.#####.#.# ### # # #. #.#...#...#.#.....#.# # # # #.### ###.###.#.###.#.#####.####### # #. # # #.....#.#...#.#..... # # #.# # # #######.#.###.#.##### # ### # ..# # # #...#...#.....#.....# # # # ### # # #.#.#.#############.# ### # # # # # #.#...#.........#...# # # # ##### # #.#####.#######.#.### ##### # # # #.#...#.......#.#...# # ##### # #.#.#.#######.#.###.######### # # ...#.........#..... # # # ### ######### ############# # ##### # # # # # # # # # # # ######### # ####### ####### ### # # # # # #####################################
где #####################################
# # # # # # #
# ### ### ### # # ##### ### ### ### #
# # # # # # # # # # #
# ### # ##### # ########### # ### # #
# # # # # # # # #
# # # ### ##### # ### ### # ### ### #
# # # # # # # # # # # # #
# ### # ##### ##### ### ##### # # ###
# # # # # # # # #
### ####### ### ### # ### ##### ### #
# # # # # # # # # # #
# ### ##### # ### ####### # # # # # #
# # # # # # # #
# # ##### ############# ### ### ### #
# # # # # # # # # #
# ### # ####### # ### ### # # ### # #
# # # # # # # # # #
# # # ### ######### # # ##### # #####
# # # # # # # # # # # #
# ##### # # ##### # ##### # # ### # #
# # # # # # # # # # #
# ### ### ### # ### # ##### ####### #
# # # # # # # # # #
# # # # ####### # ### # ##### # ### #
# # # # # # # # # # #
### # # # # # ############# # ### # #
# # # # # # # # # # #
##### # # ##### ####### # ### ##### #
# # # # # # # # #
##### # # # # ####### # ### #########
# # # # # #
# ### ######### ############# # #####
# # # # # # # # #
# # ######### # ####### ####### ### #
# # # #
#####################################
's are cells to be included in the solution path and ..................
..................
.......####.......
......##..##......
.....##....##....#
.....#......#...##
.#############.##.
##..############..
#...###########...
#...##########....
#...##########....
#...##########....
#...##########....
....##########....
....##########....
....##########....
..................
..................
- это ячейки, которые следует исключить. Input (I): | Output: | Corresponding Cells:
| | (@'s denote #'s from I)
| |
....... | ############### | ###############
.#####. | # # | # #
.#####. | # ### ####### # | # ### ####### #
####### | # #.........# # | # #@.@.@.@.@# #
.#####. | # #.#######.# # | # #.#######.# #
.#####. | # #.#.......# # | # #@#@.@.@.@# #
....... | ###.#.######### | ###.#.#########
| ....#.#........ | .@.@#@#@.@.@.@.
| #####.#.####### | #####.#.#######
| # ...#..... # | # @.@#@.@.@ #
| # #.#######.# # | # #.#######.# #
| # #.........# # | # #@.@.@.@.@# #
| # ####### ### # | # ####### ### #
| # # # # | # # # #
| ############### | ###############
| |
's, .
Вы можете поменять местами
и символы новой строки с любым символом по вашему выбору, если они отличаются друг от друга.
В качестве альтернативы вы можете принять фактическое растровое изображение входного изображения.
.
Выход #
's denote walls, ###############
# #
# ### ####### #
# #.........# #
# #.#######.# #
# #.#.......# #
###.#.#########
....#.#........
#####.#.#######
# ...#..... #
# #.#######.# #
# #.........# #
# ####### ### #
# # # #
###############
В результате лабиринт должен иметь следующий вид: #
's may be replaced by spaces if S is false. Again, characters may be swaped with other characters of your choosing or you may output an actual bitmap of the maze with the solution highlighted.
где
- Знаки обозначают части пути, являющиеся частью решения, а пробелы — это пути, исключенные из решения.
- Дополнительные сведения
- Пути должны быть шириной в одну ячейку (путем не может быть гигантская лужа пустого пространства)
- Лабиринт не должен содержать петель.
- Лабиринт должен быть полностью связан (все ячейки должны быть доступны со входа/выхода)
- Лабиринт должен быть окружен стенами (если это не вход/выход).
- Путь решения не должен включать тупиков.
- В лабиринте должен быть ровно 1 вход и 1 выход.
- Вход и выход должны быть выровнены по краю сетки и примыкать к ячейке, включенной в путь решения.
Вы можете выбрать, где расположены вход и выход.
.
Вы можете предположить, что правильный путь может быть сформирован из данного входного изображения.
(Добавлено для пояснения) На диаграмме ниже показано, как путь решения соотносится с входным изображением: Тестовые случаи:
Лейка пример из
.
Википедия
#
Вход:
.......
.#####.
.#####.
#######
.#####.
.#####.
.......
Выход (S=ложь):
Выход (S=истина): Пример растрового изображения (тот же лабиринт, что и выше): Вход:
Выход (S=ложь):