ท้าทาย
เขียนโปรแกรม / ฟังก์ชั่นที่ยอมรับ "ภาพ" และส่งออกภาพทางคดเคี้ยวที่เกิดขึ้นจากภาพนั้น
อินพุต
โปรแกรมของคุณควรยอมรับข้อโต้แย้งสองข้อ:
- ฉันภาพเพื่อสร้างเขาวงกตจาก
- S เป็นบูลีนที่ระบุว่าจะแสดงโซลูชันให้กับเขาวงกตหรือไม่
ฉันได้รับในรูปแบบต่อไปนี้:
.......
.#####.
.#####.
#######
.#####.
.#####.
.......
โดยที่#
เซลล์คือสิ่งที่จะรวมอยู่ในเส้นทางการแก้ปัญหาและ.
เป็นเซลล์ที่จะถูกแยกออก คุณอาจจะสลับออก.
's, #
' และการขึ้นบรรทัดใหม่ด้วยตัวอักษรของการเลือกของคุณตราบใดที่พวกเขาแตกต่างจากคนอื่น ๆ หรือคุณอาจยอมรับบิตแมปที่แท้จริงของภาพที่ป้อน
เอาท์พุต
เขาวงกตที่เกิดขึ้นของคุณควรอยู่ในรูปแบบต่อไปนี้:
###############
# #
# ### ####### #
# #.........# #
# #.#######.# #
# #.#.......# #
###.#.#########
....#.#........
#####.#.#######
# ...#..... #
# #.#######.# #
# #.........# #
# ####### ### #
# # # #
###############
โดยที่#
ผนังแสดงถึง, .
ส่วนใดส่วนหนึ่งของเส้นทางที่เป็นส่วนหนึ่งของการแก้ปัญหาและช่องว่างเป็นเส้นทางที่แยกออกจากการแก้ปัญหา .
's อาจถูกแทนที่ด้วยช่องว่างถ้า S เป็นเท็จ อีกครั้งตัวละครอาจถูก swaped กับตัวละครอื่น ๆ ที่คุณเลือกหรือคุณอาจแสดงผลบิตแมปที่แท้จริงของเขาวงกตด้วยการเน้นโซลูชัน
รายละเอียดเพิ่มเติม
- เส้นทางต้องกว้างหนึ่งเซลล์ (ไม่สามารถมีพูลขนาดใหญ่ของพื้นที่ว่างเป็นเส้นทางได้)
- เขาวงกตต้องไม่มีลูปใด ๆ
- เขาวงกตจะต้องเชื่อมต่ออย่างสมบูรณ์ (ทุกเซลล์จะต้องสามารถเข้าถึงได้จากทางเข้า / ทางออก)
- เขาวงกตจะต้องล้อมรอบด้วยกำแพง (เว้นแต่จะมีทางเข้า / ออก)
- เส้นทางการแก้ปัญหาต้องไม่รวมจุดสิ้นสุด
- จะต้องมีทางเข้า 1 ทางและทางออก 1 สำหรับเขาวงกต
- ทางเข้าและทางออกจะต้องจัดชิดกับขอบของตารางและติดกับเซลล์ที่รวมอยู่ในเส้นทางการแก้ปัญหา
- คุณสามารถเลือกที่จะวางทางเข้าและทางออก
- คุณอาจคิดว่าเส้นทางที่ถูกต้องสามารถเกิดขึ้นได้จากภาพอินพุตที่กำหนด
(เพิ่มเพื่อความกระจ่าง) แผนภาพด้านล่างแสดงให้เห็นว่าเส้นทางโซลูชันมีความสัมพันธ์กับภาพอินพุตอย่างไร:
Input (I): | Output: | Corresponding Cells:
| | (@'s denote #'s from I)
| |
....... | ############### | ###############
.#####. | # # | # #
.#####. | # ### ####### # | # ### ####### #
####### | # #.........# # | # #@.@.@.@.@# #
.#####. | # #.#######.# # | # #.#######.# #
.#####. | # #.#.......# # | # #@#@.@.@.@# #
....... | ###.#.######### | ###.#.#########
| ....#.#........ | .@.@#@#@.@.@.@.
| #####.#.####### | #####.#.#######
| # ...#..... # | # @.@#@.@.@ #
| # #.#######.# # | # #.#######.# #
| # #.........# # | # #@.@.@.@.@# #
| # ####### ### # | # ####### ### #
| # # # # | # # # #
| ############### | ###############
| |
กรณีทดสอบ
การรดน้ำสามารถยกตัวอย่างจากWikipedia :
การป้อนข้อมูล:
..................
..................
.......####.......
......##..##......
.....##....##....#
.....#......#...##
.#############.##.
##..############..
#...###########...
#...##########....
#...##########....
#...##########....
#...##########....
....##########....
....##########....
....##########....
..................
..................
เอาต์พุต (S = false):
#####################################
# # # # # # #
# ### ### ### # # ##### ### ### ### #
# # # # # # # # # # #
# ### # ##### # ########### # ### # #
# # # # # # # # #
# # # ### ##### # ### ### # ### ### #
# # # # # # # # # # # # #
# ### # ##### ##### ### ##### # # ###
# # # # # # # # #
### ####### ### ### # ### ##### ### #
# # # # # # # # # # #
# ### ##### # ### ####### # # # # # #
# # # # # # # #
# # ##### ############# ### ### ### #
# # # # # # # # # #
# ### # ####### # ### ### # # ### # #
# # # # # # # # # #
# # # ### ######### # # ##### # #####
# # # # # # # # # # # #
# ##### # # ##### # ##### # # ### # #
# # # # # # # # # # #
# ### ### ### # ### # ##### ####### #
# # # # # # # # # #
# # # # ####### # ### # ##### # ### #
# # # # # # # # # # #
### # # # # # ############# # ### # #
# # # # # # # # # # #
##### # # ##### ####### # ### ##### #
# # # # # # # # #
##### # # # # ####### # ### #########
# # # # # #
# ### ######### ############# # #####
# # # # # # # # #
# # ######### # ####### ####### ### #
# # # #
#####################################
เอาท์พุท (S = จริง):
#####################################
# # # # # # #
# ### ### ### # # ##### ### ### ### #
# # # # # # # # # # #
# ### # ##### # ########### # ### # #
# # # #....... # # # # #
# # # ### #####.# ###.### # ### ### #
# # # # #...# # #...# # # # #
# ### # #####.##### ###.##### # # ###
# # # ...# # #... # # #..
### #######.### ### # ###.##### ###.#
# # #.# # # #.# # #...#
# ### #####.# ### #######.# # # #.# #
# #.......#.............#...# #...# #
# #.#####.#############.###.###.### #
#...# #.......#.....#...#.#...# # #
#.### # #######.#.###.###.#.#.### # #
#.# # # .......#...#.#...#...# #
#.# # ###.#########.#.#.##### # #####
#.# # #.#.......#.#...#...# # # #
#.##### #.#.#####.#.#####.#.# ### # #
#. #.#...#...#.#.....#.# # # #
#.### ###.###.#.###.#.#####.####### #
#. # # #.....#.#...#.#..... # #
#.# # # #######.#.###.#.##### # ### #
..# # # #...#...#.....#.....# # # #
### # # #.#.#.#############.# ### # #
# # # #.#...#.........#...# # # #
##### # #.#####.#######.#.### ##### #
# # #.#...#.......#.#...# #
##### # #.#.#.#######.#.###.#########
# # ...#.........#..... # #
# ### ######### ############# # #####
# # # # # # # # #
# # ######### # ####### ####### ### #
# # # #
#####################################
ตัวอย่างบิตแมป (เขาวงกตเดียวกันกับด้านบน):