Skip to content

Instantly share code, notes, and snippets.

@lpestl
Created October 31, 2018 09:21
Show Gist options
  • Save lpestl/a6d72c1702c22e846a614cf144aaa9a2 to your computer and use it in GitHub Desktop.
Save lpestl/a6d72c1702c22e846a614cf144aaa9a2 to your computer and use it in GitHub Desktop.

Задача: Крыса в лабиринте

image

Представьте, что вы находитесь в лаборатории. Вы исследуете умение крыс ориентироваться в незнакомых лабиринтах. У вас есть конструктор для создания односвязных лабиринтов. Односвязный лабиринт - означает, что лабиринт не содержит замкнутых маршрутов, т.е. таких, которые образуют замкнутую петлю. Замкнутый маршрут возникает в том случае, если существует ограниченный стенками «остров», который не соединяется с другими стенками лабиринта. Чтобы анализировать поведение крысы в лабиринте, вам необходимо заранее знать кратчайший маршрут от точки входа, до сыра, расположенного в этом лабиринте. Так как подсчет длины кратчайшего пути - достаточно рутинная работа, вы решили запрограммировать робо-мышь, которая ищет длинну кратчайшего пути автоматически.
Вашей конечной задачей является подсчет минимального количества шагов, за которые крыса может добраться от точки входа до сыра.

Входные данные

Файл input.txt, который содержит в себе набор символов с шириной W и высотой H, где:

  • ' '(пробел) - свободный путь;
  • '#'(решетка) - стена;
  • '1'(единица) - точка входа;
  • '0'(ноль) - сыр или конечная точка (точка выхода).

Вывод

Минимальное количество шагов, за которое можно добраться от 1 до 0 не пересекая стены.

Примеры

  1. Содержимое файла input.txt:
#######
#1#   #
# # # #
#   # #
### ###
#    0#
#######

Answer = 8

  1. Содержимое файла input.txt:
###########
#1  #     #
### # # ###
#     # # #
# ### # # #
#   # #   #
# # # # # #
# # # # # #
# ### # # #
#   # # #0#
###########

Answer = 20

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment