Biorąc pod uwagę labirynt na stdin i punkt wejścia, napisz program, który drukuje ścieżkę do wyjścia na stdout. Każda ścieżka jest akceptowalna, o ile twój program nie generuje trywialnej ścieżki (przechodzącej przez każdy punkt w labiryncie) dla każdego labiryntu.
Na wejściu ściany są oznaczone a, #
a punkt wejścia a @
. Możesz użyć dowolnych znaków, aby narysować labirynt i ścieżkę na wyjściu, o ile wszystkie są różne.
Możesz założyć, że:
- Punkty wejścia i wyjścia znajdują się na krawędziach wejścia
- Każdy wiersz wejścia ma tę samą długość
- Labirynt jest rozwiązywalny i nie ma cykli
- Jest tylko jeden punkt wyjścia
Najkrótsze rozwiązanie według liczby znaków (Unicode) wygrywa.
Przykłady
(zauważ, że wejścia są wypełnione spacjami)
####
# #
@ #####
# #
#
#######
####
# #
@*#####
#* #
#******
#######
### ###################
### # #
## ######### # #
# ##### #
############### #@##
###*###################
###*********#*********#
## *#########* # *#
# *********** #####**#
############### #@##