Tantangan
Tulis program / fungsi yang menerima "gambar" dan mengeluarkan labirin gambar dari gambar itu.
Memasukkan
Program Anda harus menerima dua argumen:
- Saya, gambar untuk membentuk labirin dari
- S, sebuah boolean yang menentukan apakah akan menampilkan solusi ke labirin
Saya diberikan dalam bentuk berikut:
.......
.#####.
.#####.
#######
.#####.
.#####.
.......
di mana #
sel adalah untuk dimasukkan dalam jalur solusi dan .
sel adalah untuk dikecualikan. Anda dapat menukar baris .
's, #
dan baris baru dengan karakter apa pun yang Anda pilih asalkan berbeda satu sama lain. Atau, Anda dapat menerima bitmap aktual dari gambar input.
Keluaran
Labirin Anda yang dihasilkan harus dalam bentuk berikut:
###############
# #
# ### ####### #
# #.........# #
# #.#######.# #
# #.#.......# #
###.#.#########
....#.#........
#####.#.#######
# ...#..... #
# #.#######.# #
# #.........# #
# ####### ### #
# # # #
###############
di mana #
dinding menunjukkan, .
menunjukkan bagian dari jalan yang merupakan bagian dari solusi, dan ruang adalah jalan yang dikeluarkan dari solusi. Itu .
dapat diganti dengan spasi jika S salah. Sekali lagi, karakter dapat ditukar dengan karakter lain yang Anda pilih atau Anda dapat menampilkan bitmap sebenarnya dari labirin dengan solusi yang disorot.
detil tambahan
- Jalan harus selebar satu sel (tidak dapat memiliki kolam kosong ruang kosong menjadi jalan)
- Labirin tidak boleh mengandung loop apa pun
- Labirin harus terhubung sepenuhnya (semua sel harus dapat dijangkau dari pintu masuk / keluar)
- Labirin harus dikelilingi oleh dinding (kecuali pintu masuk / keluar)
- Jalur solusi tidak boleh menyertakan jalan buntu
- Harus ada tepat 1 pintu masuk dan 1 pintu keluar untuk labirin
- Pintu masuk dan keluar harus sejajar dengan tepi kisi dan berdekatan dengan sel yang termasuk dalam jalur solusi
- Anda dapat memilih tempat pintu masuk dan keluar ditempatkan
- Anda dapat mengasumsikan bahwa jalur yang valid dapat dibentuk dari gambar input yang diberikan
(Ditambahkan untuk klarifikasi) Diagram di bawah ini menunjukkan bagaimana jalur solusi berkorelasi dengan gambar input:
Input (I): | Output: | Corresponding Cells:
| | (@'s denote #'s from I)
| |
....... | ############### | ###############
.#####. | # # | # #
.#####. | # ### ####### # | # ### ####### #
####### | # #.........# # | # #@.@.@.@.@# #
.#####. | # #.#######.# # | # #.#######.# #
.#####. | # #.#.......# # | # #@#@.@.@.@# #
....... | ###.#.######### | ###.#.#########
| ....#.#........ | .@.@#@#@.@.@.@.
| #####.#.####### | #####.#.#######
| # ...#..... # | # @.@#@.@.@ #
| # #.#######.# # | # #.#######.# #
| # #.........# # | # #@.@.@.@.@# #
| # ####### ### # | # ####### ### #
| # # # # | # # # #
| ############### | ###############
| |
Uji Kasus
Penyiraman dapat contoh dari Wikipedia :
Memasukkan:
..................
..................
.......####.......
......##..##......
.....##....##....#
.....#......#...##
.#############.##.
##..############..
#...###########...
#...##########....
#...##########....
#...##########....
#...##########....
....##########....
....##########....
....##########....
..................
..................
Output (S = false):
#####################################
# # # # # # #
# ### ### ### # # ##### ### ### ### #
# # # # # # # # # # #
# ### # ##### # ########### # ### # #
# # # # # # # # #
# # # ### ##### # ### ### # ### ### #
# # # # # # # # # # # # #
# ### # ##### ##### ### ##### # # ###
# # # # # # # # #
### ####### ### ### # ### ##### ### #
# # # # # # # # # # #
# ### ##### # ### ####### # # # # # #
# # # # # # # #
# # ##### ############# ### ### ### #
# # # # # # # # # #
# ### # ####### # ### ### # # ### # #
# # # # # # # # # #
# # # ### ######### # # ##### # #####
# # # # # # # # # # # #
# ##### # # ##### # ##### # # ### # #
# # # # # # # # # # #
# ### ### ### # ### # ##### ####### #
# # # # # # # # # #
# # # # ####### # ### # ##### # ### #
# # # # # # # # # # #
### # # # # # ############# # ### # #
# # # # # # # # # # #
##### # # ##### ####### # ### ##### #
# # # # # # # # #
##### # # # # ####### # ### #########
# # # # # #
# ### ######### ############# # #####
# # # # # # # # #
# # ######### # ####### ####### ### #
# # # #
#####################################
Output (S = true):
#####################################
# # # # # # #
# ### ### ### # # ##### ### ### ### #
# # # # # # # # # # #
# ### # ##### # ########### # ### # #
# # # #....... # # # # #
# # # ### #####.# ###.### # ### ### #
# # # # #...# # #...# # # # #
# ### # #####.##### ###.##### # # ###
# # # ...# # #... # # #..
### #######.### ### # ###.##### ###.#
# # #.# # # #.# # #...#
# ### #####.# ### #######.# # # #.# #
# #.......#.............#...# #...# #
# #.#####.#############.###.###.### #
#...# #.......#.....#...#.#...# # #
#.### # #######.#.###.###.#.#.### # #
#.# # # .......#...#.#...#...# #
#.# # ###.#########.#.#.##### # #####
#.# # #.#.......#.#...#...# # # #
#.##### #.#.#####.#.#####.#.# ### # #
#. #.#...#...#.#.....#.# # # #
#.### ###.###.#.###.#.#####.####### #
#. # # #.....#.#...#.#..... # #
#.# # # #######.#.###.#.##### # ### #
..# # # #...#...#.....#.....# # # #
### # # #.#.#.#############.# ### # #
# # # #.#...#.........#...# # # #
##### # #.#####.#######.#.### ##### #
# # #.#...#.......#.#...# #
##### # #.#.#.#######.#.###.#########
# # ...#.........#..... # #
# ### ######### ############# # #####
# # # # # # # # #
# # ######### # ####### ####### ### #
# # # #
#####################################
Contoh Bitmap (labirin yang sama seperti di atas):