Herausforderung
Schreiben Sie ein Programm / eine Funktion, die ein "Bild" akzeptiert und ein aus diesem Bild gebildetes Bildlabyrinth ausgibt .
Eingang
Ihr Programm sollte zwei Argumente akzeptieren:
- Ich, das Bild, aus dem sich das Labyrinth zusammensetzt
- S, ein Boolescher Wert, der angibt, ob die Lösung für das Labyrinth angezeigt werden soll oder nicht
Ich werde in der folgenden Form gegeben:
.......
.#####.
.#####.
#######
.#####.
.#####.
.......
Dabei handelt #
es sich um Zellen, die in den Lösungspfad aufgenommen werden sollen, und .
um Zellen, die ausgeschlossen werden sollen. Sie können die Swap .
‚s, #
‘ s und neue Zeilen mit jedem Charakter Ihrer solange sie voneinander unterscheiden zu wählen. Alternativ können Sie eine tatsächliche Bitmap des Eingabebildes akzeptieren.
Ausgabe
Das resultierende Labyrinth sollte die folgende Form haben:
###############
# #
# ### ####### #
# #.........# #
# #.#######.# #
# #.#.......# #
###.#.#########
....#.#........
#####.#.#######
# ...#..... #
# #.#######.# #
# #.........# #
# ####### ### #
# # # #
###############
wo #
‚s bezeichnen die Wände, .
‘ s bezeichnen die Abschnitte des Weges, der ein Teil der Lösung sind, und Zwischenräume sind Pfade von der Lösung ausgeschlossen. Die .
's können durch Leerzeichen ersetzt werden, wenn S falsch ist. Auch hier können Zeichen mit anderen Zeichen Ihrer Wahl ausgetauscht werden, oder Sie können eine tatsächliche Bitmap des Labyrinths mit der hervorgehobenen Lösung ausgeben.
Zusätzliche Details
- Die Pfade müssen eine Zelle breit sein (der Pfad darf kein riesiger Pool von leeren Räumen sein)
- Das Labyrinth darf keine Schleifen enthalten
- Das Labyrinth muss vollständig verbunden sein (alle Zellen müssen vom Eingang / Ausgang aus erreichbar sein)
- Das Labyrinth muss von Mauern umgeben sein (es sei denn, es ist ein Eingang / Ausgang)
- Der Lösungspfad darf keine Sackgassen enthalten
- Es muss genau 1 Eingang und 1 Ausgang für das Labyrinth geben
- Der Eingang und der Ausgang müssen am Rand des Gitters und neben einer im Lösungspfad enthaltenen Zelle ausgerichtet sein
- Sie können wählen, wo der Eingang und der Ausgang platziert werden
- Sie können davon ausgehen, dass aus dem angegebenen Eingabebild ein gültiger Pfad gebildet werden kann
(Zur Verdeutlichung hinzugefügt) Das folgende Diagramm zeigt, wie der Lösungspfad mit dem Eingabebild korreliert:
Input (I): | Output: | Corresponding Cells:
| | (@'s denote #'s from I)
| |
....... | ############### | ###############
.#####. | # # | # #
.#####. | # ### ####### # | # ### ####### #
####### | # #.........# # | # #@.@.@.@.@# #
.#####. | # #.#######.# # | # #.#######.# #
.#####. | # #.#.......# # | # #@#@.@.@.@# #
....... | ###.#.######### | ###.#.#########
| ....#.#........ | .@.@#@#@.@.@.@.
| #####.#.####### | #####.#.#######
| # ...#..... # | # @.@#@.@.@ #
| # #.#######.# # | # #.#######.# #
| # #.........# # | # #@.@.@.@.@# #
| # ####### ### # | # ####### ### #
| # # # # | # # # #
| ############### | ###############
| |
Testfälle
Gießkanne zB aus Wikipedia :
Eingang:
..................
..................
.......####.......
......##..##......
.....##....##....#
.....#......#...##
.#############.##.
##..############..
#...###########...
#...##########....
#...##########....
#...##########....
#...##########....
....##########....
....##########....
....##########....
..................
..................
Ausgabe (S = falsch):
#####################################
# # # # # # #
# ### ### ### # # ##### ### ### ### #
# # # # # # # # # # #
# ### # ##### # ########### # ### # #
# # # # # # # # #
# # # ### ##### # ### ### # ### ### #
# # # # # # # # # # # # #
# ### # ##### ##### ### ##### # # ###
# # # # # # # # #
### ####### ### ### # ### ##### ### #
# # # # # # # # # # #
# ### ##### # ### ####### # # # # # #
# # # # # # # #
# # ##### ############# ### ### ### #
# # # # # # # # # #
# ### # ####### # ### ### # # ### # #
# # # # # # # # # #
# # # ### ######### # # ##### # #####
# # # # # # # # # # # #
# ##### # # ##### # ##### # # ### # #
# # # # # # # # # # #
# ### ### ### # ### # ##### ####### #
# # # # # # # # # #
# # # # ####### # ### # ##### # ### #
# # # # # # # # # # #
### # # # # # ############# # ### # #
# # # # # # # # # # #
##### # # ##### ####### # ### ##### #
# # # # # # # # #
##### # # # # ####### # ### #########
# # # # # #
# ### ######### ############# # #####
# # # # # # # # #
# # ######### # ####### ####### ### #
# # # #
#####################################
Ausgabe (S = wahr):
#####################################
# # # # # # #
# ### ### ### # # ##### ### ### ### #
# # # # # # # # # # #
# ### # ##### # ########### # ### # #
# # # #....... # # # # #
# # # ### #####.# ###.### # ### ### #
# # # # #...# # #...# # # # #
# ### # #####.##### ###.##### # # ###
# # # ...# # #... # # #..
### #######.### ### # ###.##### ###.#
# # #.# # # #.# # #...#
# ### #####.# ### #######.# # # #.# #
# #.......#.............#...# #...# #
# #.#####.#############.###.###.### #
#...# #.......#.....#...#.#...# # #
#.### # #######.#.###.###.#.#.### # #
#.# # # .......#...#.#...#...# #
#.# # ###.#########.#.#.##### # #####
#.# # #.#.......#.#...#...# # # #
#.##### #.#.#####.#.#####.#.# ### # #
#. #.#...#...#.#.....#.# # # #
#.### ###.###.#.###.#.#####.####### #
#. # # #.....#.#...#.#..... # #
#.# # # #######.#.###.#.##### # ### #
..# # # #...#...#.....#.....# # # #
### # # #.#.#.#############.# ### # #
# # # #.#...#.........#...# # # #
##### # #.#####.#######.#.### ##### #
# # #.#...#.......#.#...# #
##### # #.#.#.#######.#.###.#########
# # ...#.........#..... # #
# ### ######### ############# # #####
# # # # # # # # #
# # ######### # ####### ####### ### #
# # # #
#####################################
Bitmap-Beispiel (dasselbe Labyrinth wie oben):