Sfida
Scrivi un programma / funzione che accetta una "immagine" e genera un labirinto di immagini formato da quella immagine.
Ingresso
Il tuo programma dovrebbe accettare due argomenti:
- Io, l'immagine per formare il labirinto da
- S, un valore booleano che specifica se visualizzare o meno la soluzione nel labirinto
Mi viene dato nella forma seguente:
.......
.#####.
.#####.
#######
.#####.
.#####.
.......
dove #
sono le celle da includere nel percorso della soluzione e .
sono le celle da escludere. Puoi scambiare .
', #
' e newline con qualsiasi personaggio di tua scelta purché differiscano l'uno dall'altro. In alternativa, è possibile accettare una bitmap effettiva dell'immagine di input.
Produzione
Il labirinto risultante dovrebbe essere nella seguente forma:
###############
# #
# ### ####### #
# #.........# #
# #.#######.# #
# #.#.......# #
###.#.#########
....#.#........
#####.#.#######
# ...#..... #
# #.#######.# #
# #.........# #
# ####### ### #
# # # #
###############
dove #
denotano muri, .
denotano porzioni del percorso che fanno parte della soluzione e gli spazi sono percorsi esclusi dalla soluzione. L .
'può essere sostituito da spazi se S è falso. Ancora una volta, i personaggi possono essere scambiati con altri personaggi di tua scelta o potresti generare una bitmap effettiva del labirinto con la soluzione evidenziata.
dettagli aggiuntivi
- I percorsi devono essere larghi di una cella (non può essere il pool gigante di spazio vuoto il percorso)
- Il labirinto non deve contenere anelli
- Il labirinto deve essere completamente collegato (tutte le celle devono essere raggiungibili dall'ingresso / uscita)
- Il labirinto deve essere circondato da muri (a meno che non sia un ingresso / uscita)
- Il percorso della soluzione non deve includere vicoli ciechi
- Devono esserci esattamente 1 entrata e 1 uscita per il labirinto
- L'ingresso e l'uscita devono essere allineati al bordo della griglia e adiacenti a una cella inclusa nel percorso della soluzione
- Puoi scegliere dove posizionare l'ingresso e l'uscita
- Si può presumere che dall'immagine di input fornita possa essere formato un percorso valido
(Aggiunto per chiarimenti) Il diagramma seguente mostra come il percorso della soluzione è correlato all'immagine di input:
Input (I): | Output: | Corresponding Cells:
| | (@'s denote #'s from I)
| |
....... | ############### | ###############
.#####. | # # | # #
.#####. | # ### ####### # | # ### ####### #
####### | # #.........# # | # #@.@.@.@.@# #
.#####. | # #.#######.# # | # #.#######.# #
.#####. | # #.#.......# # | # #@#@.@.@.@# #
....... | ###.#.######### | ###.#.#########
| ....#.#........ | .@.@#@#@.@.@.@.
| #####.#.####### | #####.#.#######
| # ...#..... # | # @.@#@.@.@ #
| # #.#######.# # | # #.#######.# #
| # #.........# # | # #@.@.@.@.@# #
| # ####### ### # | # ####### ### #
| # # # # | # # # #
| ############### | ###############
| |
Casi test
Esempio di annaffiatoio da Wikipedia :
Ingresso:
..................
..................
.......####.......
......##..##......
.....##....##....#
.....#......#...##
.#############.##.
##..############..
#...###########...
#...##########....
#...##########....
#...##########....
#...##########....
....##########....
....##########....
....##########....
..................
..................
Uscita (S = falso):
#####################################
# # # # # # #
# ### ### ### # # ##### ### ### ### #
# # # # # # # # # # #
# ### # ##### # ########### # ### # #
# # # # # # # # #
# # # ### ##### # ### ### # ### ### #
# # # # # # # # # # # # #
# ### # ##### ##### ### ##### # # ###
# # # # # # # # #
### ####### ### ### # ### ##### ### #
# # # # # # # # # # #
# ### ##### # ### ####### # # # # # #
# # # # # # # #
# # ##### ############# ### ### ### #
# # # # # # # # # #
# ### # ####### # ### ### # # ### # #
# # # # # # # # # #
# # # ### ######### # # ##### # #####
# # # # # # # # # # # #
# ##### # # ##### # ##### # # ### # #
# # # # # # # # # # #
# ### ### ### # ### # ##### ####### #
# # # # # # # # # #
# # # # ####### # ### # ##### # ### #
# # # # # # # # # # #
### # # # # # ############# # ### # #
# # # # # # # # # # #
##### # # ##### ####### # ### ##### #
# # # # # # # # #
##### # # # # ####### # ### #########
# # # # # #
# ### ######### ############# # #####
# # # # # # # # #
# # ######### # ####### ####### ### #
# # # #
#####################################
Uscita (S = vero):
#####################################
# # # # # # #
# ### ### ### # # ##### ### ### ### #
# # # # # # # # # # #
# ### # ##### # ########### # ### # #
# # # #....... # # # # #
# # # ### #####.# ###.### # ### ### #
# # # # #...# # #...# # # # #
# ### # #####.##### ###.##### # # ###
# # # ...# # #... # # #..
### #######.### ### # ###.##### ###.#
# # #.# # # #.# # #...#
# ### #####.# ### #######.# # # #.# #
# #.......#.............#...# #...# #
# #.#####.#############.###.###.### #
#...# #.......#.....#...#.#...# # #
#.### # #######.#.###.###.#.#.### # #
#.# # # .......#...#.#...#...# #
#.# # ###.#########.#.#.##### # #####
#.# # #.#.......#.#...#...# # # #
#.##### #.#.#####.#.#####.#.# ### # #
#. #.#...#...#.#.....#.# # # #
#.### ###.###.#.###.#.#####.####### #
#. # # #.....#.#...#.#..... # #
#.# # # #######.#.###.#.##### # ### #
..# # # #...#...#.....#.....# # # #
### # # #.#.#.#############.# ### # #
# # # #.#...#.........#...# # # #
##### # #.#####.#######.#.### ##### #
# # #.#...#.......#.#...# #
##### # #.#.#.#######.#.###.#########
# # ...#.........#..... # #
# ### ######### ############# # #####
# # # # # # # # #
# # ######### # ####### ####### ### #
# # # #
#####################################
Esempio di bitmap (stesso labirinto di cui sopra):