Решения задачи с Ulearn

Практика «Жадина в лабиринте»

Скачайте проект.

На этот раз в лабиринт с сокровищами попал Жадина! Лабиринт очень старый и все свободные клетки успели покрыться зарослями. Для каждой клетки лабиринта известна её трудность — количество сил, которые потратит Жадина на прохождение зарослей этой клетки.

После каждого шага силы Жадины уменьшаются на трудность клетки, в которую он шагнул. Когда силы заканчиваются, Жадина останавливается.

Чтобы жизнь удалась, Жадине нужно собрать N сундуков. При этом Жадина отказывается идти к сундуку, если есть другой сундук, путь до которого потребует меньше сил: он не только жадина, но и лентяй!

Помогите Жадине собрать N сундуков!

Для начала запустите проект. Вы увидите визуализацию лабиринта:

  • Выбрать лабиринт можно в меню слева.
  • Цифры на красных клетках — это трудность.

Снизу, в строке статуса отображается текущее состояние.

Для того, чтобы сдать задачу, в файле GreedyPathFinder.cs реализуйте метод FindPathToCompleteGoal. Он должен возвращать путь передвижения Жадины. Путь не должен содержать исходную позицию — ту из которой Жадина начинает движение. Если подходящего пути не существует, метод должен возвращать пустой список.

Текущее состояние уровня передается в метод в объекте типа State. При желании вы можете его модифицировать.

Гарантируется, что если рассмотреть множество всех сундуков и добавить в него исходную позицию, то в нём не существует тройки A, B, C, такой, что от А добраться до B так же трудно, как и от A до C. Другими словами, у Жадины всегда есть только один вариант дальнейших действий.

Тесты в классе GreedyPathFinder_Should должны завершаться успехом. Остальные тесты в проекте предстоит починить в следующих задачах про Жадину.

Стоимость решения этой задачи всего 100 рублей, купи решения у меня 🙂

Обновлено: 20.11.2018 — 12:14

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.