Задача C. Темный лабиринт

Автор:Maxim Kuzin   Ограничение времени:30 сек
Входной файл:input.txt   Ограничение памяти:256 Мб
Выходной файл:output.txt  
Максимальный балл:100  

Условие

Представьте, что вы потерялись в лабиринте и не можете найти выход. А еще там абсолютная темнота и вы ничего не видите.

К счастью, сейчас вы не в лабиринте, но нужно быть готовым ко всему. Поэтому необходимо написать программу, которая научится искать выход из лабиринта не зная его структуры.

Чтобы упростить задачу, вам предлагается сцена в Unity с лабиринтом и шаром. Вы можете указать время и вектор скорости для шара. В течении указанного вами времени шар будет двигаться в направлении вектора с заданной скоростью без ускорения. По истечении этого времени вам опять дадут возможность указать новое время и вектор скорости.

Вы можете управлять шаром только когда задаете ему новую скорость. В этот же момент вы можете узнать его текущие координаты. Пока шар двигается вы не можете узнать его местоположение.

Программно вы не можете узнать координаты стен и точку выхода из лабиринта. Но вам гарантируется, что до нее можно добраться из изначальной точки (места, где изначально находится шар). Также вам гарантируется, что шар упруго отталкивается от стен.

Вам нужно реализовать функцию getMove() в классе Solution. Эту функция будет вызываться чтобы дать вам возможность указать новое время и вектор скорости для шара. Эта функция должна возвращать объект Vector4 состоящий из четырех параметров. Первые три отвечают за вектор скорости (y-координата будет игнорироваться), четвертый за время, в течении которого будет двигаться шар. После того, как это время закончится вам опять дадут возможность указать новое время и вектор скорости. Длина вашего вектора скорости не должна превышать 104

Обратите внимание, что вы не можете сохранять какую-либо информацию между двумя вызовами функции. Для этого нужно использовать специальные методы в объекте controller.

Весь ваш код должен находиться в классе Solution. Другие изменения в сцене учитываться не будут. Объект controller предоставляет следующие функции для работы с памятью:

Проект https://github.com/Supermagzzz/NTI_TASK2, Вам осталось реализовать класс Solution.

Одна клетка на поле имеет размер 44 единицы Unity.

Вы можете тестировать свои решения, изменяя данные, содержащиеся в файле input.txt в репозитории проекта. Красная клетка в редакторе Unity показывает выход из лабиринта. Изучите пример Solution.cs для лучшего понимания задачи.

Формат входного файла

Входной файл содержит пять целых чисел seed, r, c, x, y - значение для случайной генерации лабиринта, количество строк и столбцов в лабиринте, координаты выхода из лабиринта. Реализовывать считывание данных с файла input.txt не нужно. Для получения данных используйте функции, реализованные в controller.

Формат выходного файла

Файл с решением должен содержать реализацию класса Solution. Координаты, полученные с помощью вашего решения, должны иметь погрешность не больше одной единицы в координатах Unity. Реализовывать вывод в файл output.txt не нужно.

Ограничения

1 ≤ r, c ≤ 10

0 ≤ x ≤ r

0 ≤ y ≤ c


0.082s 0.016s 15