Thử thách
Viết chương trình / chức năng chấp nhận "hình ảnh" và xuất ra một mê cung hình ảnh được hình thành từ hình ảnh đó.
Đầu vào
Chương trình của bạn nên chấp nhận hai đối số:
- Tôi, hình ảnh để tạo thành mê cung từ
- S, một boolean chỉ định có hay không hiển thị giải pháp cho mê cung
Tôi được đưa ra dưới hình thức sau:
.......
.#####.
.#####.
#######
.#####.
.#####.
.......
trong đó #
các ô được bao gồm trong đường dẫn giải pháp và .
là các ô được loại trừ. Bạn có thể trao đổi trên các .
's, #
' s và dòng mới với bất kỳ ký tự lựa chọn của bạn miễn là chúng khác nhau từ mỗi khác. Ngoài ra, bạn có thể chấp nhận một bitmap thực tế của hình ảnh đầu vào.
Đầu ra
Mê cung kết quả của bạn phải ở dạng sau:
###############
# #
# ### ####### #
# #.........# #
# #.#######.# #
# #.#.......# #
###.#.#########
....#.#........
#####.#.#######
# ...#..... #
# #.#######.# #
# #.........# #
# ####### ### #
# # # #
###############
trong đó #
biểu thị các bức tường, .
biểu thị các phần của đường dẫn là một phần của giải pháp và các khoảng trắng là các đường dẫn được loại trừ khỏi giải pháp. Các .
dấu có thể được thay thế bằng dấu cách nếu S sai. Một lần nữa, các ký tự có thể được hoán đổi với các ký tự khác mà bạn chọn hoặc bạn có thể xuất ra một bitmap thực tế của mê cung với giải pháp được tô sáng.
Chi tiết bổ sung
- Đường dẫn phải rộng một ô (không thể có không gian trống khổng lồ là đường dẫn)
- Mê cung không được chứa bất kỳ vòng lặp nào
- Mê cung phải được kết nối đầy đủ (tất cả các ô phải có thể truy cập từ lối vào / lối ra)
- Mê cung phải được bao quanh bởi các bức tường (trừ khi nó là lối vào / lối ra)
- Đường dẫn giải pháp không được bao gồm ngõ cụt
- Phải có chính xác 1 lối vào và 1 lối ra cho mê cung
- Lối vào và lối ra phải được căn chỉnh theo cạnh của lưới và liền kề với một ô có trong đường dẫn giải pháp
- Bạn có thể chọn nơi đặt lối vào và lối ra
- Bạn có thể cho rằng một đường dẫn hợp lệ có thể được hình thành từ hình ảnh đầu vào đã cho
(Đã thêm để làm rõ) Sơ đồ bên dưới hiển thị cách đường dẫn giải pháp tương quan với hình ảnh đầu vào:
Input (I): | Output: | Corresponding Cells:
| | (@'s denote #'s from I)
| |
....... | ############### | ###############
.#####. | # # | # #
.#####. | # ### ####### # | # ### ####### #
####### | # #.........# # | # #@.@.@.@.@# #
.#####. | # #.#######.# # | # #.#######.# #
.#####. | # #.#.......# # | # #@#@.@.@.@# #
....... | ###.#.######### | ###.#.#########
| ....#.#........ | .@.@#@#@.@.@.@.
| #####.#.####### | #####.#.#######
| # ...#..... # | # @.@#@.@.@ #
| # #.#######.# # | # #.#######.# #
| # #.........# # | # #@.@.@.@.@# #
| # ####### ### # | # ####### ### #
| # # # # | # # # #
| ############### | ###############
| |
Các trường hợp thử nghiệm
Ví dụ tưới nước từ Wikipedia :
Đầu vào:
..................
..................
.......####.......
......##..##......
.....##....##....#
.....#......#...##
.#############.##.
##..############..
#...###########...
#...##########....
#...##########....
#...##########....
#...##########....
....##########....
....##########....
....##########....
..................
..................
Đầu ra (S = false):
#####################################
# # # # # # #
# ### ### ### # # ##### ### ### ### #
# # # # # # # # # # #
# ### # ##### # ########### # ### # #
# # # # # # # # #
# # # ### ##### # ### ### # ### ### #
# # # # # # # # # # # # #
# ### # ##### ##### ### ##### # # ###
# # # # # # # # #
### ####### ### ### # ### ##### ### #
# # # # # # # # # # #
# ### ##### # ### ####### # # # # # #
# # # # # # # #
# # ##### ############# ### ### ### #
# # # # # # # # # #
# ### # ####### # ### ### # # ### # #
# # # # # # # # # #
# # # ### ######### # # ##### # #####
# # # # # # # # # # # #
# ##### # # ##### # ##### # # ### # #
# # # # # # # # # # #
# ### ### ### # ### # ##### ####### #
# # # # # # # # # #
# # # # ####### # ### # ##### # ### #
# # # # # # # # # # #
### # # # # # ############# # ### # #
# # # # # # # # # # #
##### # # ##### ####### # ### ##### #
# # # # # # # # #
##### # # # # ####### # ### #########
# # # # # #
# ### ######### ############# # #####
# # # # # # # # #
# # ######### # ####### ####### ### #
# # # #
#####################################
Đầu ra (S = true):
#####################################
# # # # # # #
# ### ### ### # # ##### ### ### ### #
# # # # # # # # # # #
# ### # ##### # ########### # ### # #
# # # #....... # # # # #
# # # ### #####.# ###.### # ### ### #
# # # # #...# # #...# # # # #
# ### # #####.##### ###.##### # # ###
# # # ...# # #... # # #..
### #######.### ### # ###.##### ###.#
# # #.# # # #.# # #...#
# ### #####.# ### #######.# # # #.# #
# #.......#.............#...# #...# #
# #.#####.#############.###.###.### #
#...# #.......#.....#...#.#...# # #
#.### # #######.#.###.###.#.#.### # #
#.# # # .......#...#.#...#...# #
#.# # ###.#########.#.#.##### # #####
#.# # #.#.......#.#...#...# # # #
#.##### #.#.#####.#.#####.#.# ### # #
#. #.#...#...#.#.....#.# # # #
#.### ###.###.#.###.#.#####.####### #
#. # # #.....#.#...#.#..... # #
#.# # # #######.#.###.#.##### # ### #
..# # # #...#...#.....#.....# # # #
### # # #.#.#.#############.# ### # #
# # # #.#...#.........#...# # # #
##### # #.#####.#######.#.### ##### #
# # #.#...#.......#.#...# #
##### # #.#.#.#######.#.###.#########
# # ...#.........#..... # #
# ### ######### ############# # #####
# # # # # # # # #
# # ######### # ####### ####### ### #
# # # #
#####################################
Ví dụ về bitmap (cùng mê cung như trên):