도전
"이미지"를 받아들이고 해당 이미지로부터 형성된 그림 미로를 출력하는 프로그램 / 기능을 작성하십시오 .
입력
프로그램은 두 가지 주장을 받아 들여야합니다.
- 나는 미로를 형성하는 이미지
- S, 미로에 솔루션을 표시할지 여부를 지정하는 부울
나는 다음과 같은 형태로 제공됩니다.
.......
.#####.
.#####.
#######
.#####.
.#####.
.......
여기서는 #
경로에 포함 .
되는 셀 이고 제외 할 셀입니다. 당신은 스왑 수 .
의를, #
의와는만큼 그들은 서로 다르기 때문에 선택의 문자로 바꿈. 또는 입력 이미지의 실제 비트 맵을 사용할 수 있습니다.
산출
결과 미로의 형태는 다음과 같습니다.
###############
# #
# ### ####### #
# #.........# #
# #.#######.# #
# #.#.......# #
###.#.#########
....#.#........
#####.#.#######
# ...#..... #
# #.#######.# #
# #.........# #
# ####### ### #
# # # #
###############
여기서 #
'는 벽을 나타내고, .
'는 솔루션의 일부인 경로 부분을 나타내며 공간은 솔루션에서 제외 된 경로입니다. 그만큼.
의 S가 거짓 인 경우 공백으로 대체 될 수있다. 다시 말하지만, 당신이 선택한 다른 문자들과 문자를 교체하거나 솔루션이 강조된 미로의 실제 비트 맵을 출력 할 수 있습니다.
추가 세부 사항
- 경로는 하나의 셀 너비 여야합니다 (빈 공간의 거대한 풀이 경로가 될 수 없음)
- 미로는 루프를 포함해서는 안됩니다
- 미로는 완전히 연결되어 있어야합니다 (입구 / 출구에서 모든 셀에 접근 할 수 있어야 함)
- 미로는 벽으로 둘러싸여 있어야합니다 (입구 / 출구가 아닌 한)
- 솔루션 경로에는 막 다른 골목이 없어야합니다
- 미로에는 정확히 1 개의 입구와 1 개의 출구가 있어야합니다
- 입구와 출구는 그리드의 가장자리에 정렬되어야하며 솔루션 경로에 포함 된 셀에 인접해야합니다.
- 입구와 출구의 위치를 선택할 수 있습니다
- 주어진 입력 이미지로부터 유효한 경로가 형성 될 수 있다고 가정 할 수 있습니다
(설명을 위해 추가됨) 아래 다이어그램은 솔루션 경로가 입력 이미지와 상관되는 방식을 보여줍니다.
Input (I): | Output: | Corresponding Cells:
| | (@'s denote #'s from I)
| |
....... | ############### | ###############
.#####. | # # | # #
.#####. | # ### ####### # | # ### ####### #
####### | # #.........# # | # #@.@.@.@.@# #
.#####. | # #.#######.# # | # #.#######.# #
.#####. | # #.#.......# # | # #@#@.@.@.@# #
....... | ###.#.######### | ###.#.#########
| ....#.#........ | .@.@#@#@.@.@.@.
| #####.#.####### | #####.#.#######
| # ...#..... # | # @.@#@.@.@ #
| # #.#######.# # | # #.#######.# #
| # #.........# # | # #@.@.@.@.@# #
| # ####### ### # | # ####### ### #
| # # # # | # # # #
| ############### | ###############
| |
테스트 사례
Wikipedia 에서 물을 수있는 예 :
입력:
..................
..................
.......####.......
......##..##......
.....##....##....#
.....#......#...##
.#############.##.
##..############..
#...###########...
#...##########....
#...##########....
#...##########....
#...##########....
....##########....
....##########....
....##########....
..................
..................
출력 (S = false) :
#####################################
# # # # # # #
# ### ### ### # # ##### ### ### ### #
# # # # # # # # # # #
# ### # ##### # ########### # ### # #
# # # # # # # # #
# # # ### ##### # ### ### # ### ### #
# # # # # # # # # # # # #
# ### # ##### ##### ### ##### # # ###
# # # # # # # # #
### ####### ### ### # ### ##### ### #
# # # # # # # # # # #
# ### ##### # ### ####### # # # # # #
# # # # # # # #
# # ##### ############# ### ### ### #
# # # # # # # # # #
# ### # ####### # ### ### # # ### # #
# # # # # # # # # #
# # # ### ######### # # ##### # #####
# # # # # # # # # # # #
# ##### # # ##### # ##### # # ### # #
# # # # # # # # # # #
# ### ### ### # ### # ##### ####### #
# # # # # # # # # #
# # # # ####### # ### # ##### # ### #
# # # # # # # # # # #
### # # # # # ############# # ### # #
# # # # # # # # # # #
##### # # ##### ####### # ### ##### #
# # # # # # # # #
##### # # # # ####### # ### #########
# # # # # #
# ### ######### ############# # #####
# # # # # # # # #
# # ######### # ####### ####### ### #
# # # #
#####################################
출력 (S = true) :
#####################################
# # # # # # #
# ### ### ### # # ##### ### ### ### #
# # # # # # # # # # #
# ### # ##### # ########### # ### # #
# # # #....... # # # # #
# # # ### #####.# ###.### # ### ### #
# # # # #...# # #...# # # # #
# ### # #####.##### ###.##### # # ###
# # # ...# # #... # # #..
### #######.### ### # ###.##### ###.#
# # #.# # # #.# # #...#
# ### #####.# ### #######.# # # #.# #
# #.......#.............#...# #...# #
# #.#####.#############.###.###.### #
#...# #.......#.....#...#.#...# # #
#.### # #######.#.###.###.#.#.### # #
#.# # # .......#...#.#...#...# #
#.# # ###.#########.#.#.##### # #####
#.# # #.#.......#.#...#...# # # #
#.##### #.#.#####.#.#####.#.# ### # #
#. #.#...#...#.#.....#.# # # #
#.### ###.###.#.###.#.#####.####### #
#. # # #.....#.#...#.#..... # #
#.# # # #######.#.###.#.##### # ### #
..# # # #...#...#.....#.....# # # #
### # # #.#.#.#############.# ### # #
# # # #.#...#.........#...# # # #
##### # #.#####.#######.#.### ##### #
# # #.#...#.......#.#...# #
##### # #.#.#.#######.#.###.#########
# # ...#.........#..... # #
# ### ######### ############# # #####
# # # # # # # # #
# # ######### # ####### ####### ### #
# # # #
#####################################
비트 맵 예 (위와 같은 미로) :