Задача B. Мортира

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

Условие

Вы участвуете в разработке игры в виртуальной реальности жанра Tower Defense. В играх подобного жанра, целью является защита основного замка от наступления вражеских юнитов.

Одно из защитных орудий в игре — мортира. Это пушка которая может регулировать угол наклона в пределах от 45 до 90 градусов от земли. Сама себе пушка урон нанести не может.

Как разработчику, вам поручили задание разработать искусственный интеллект для этого орудия. На начальных уровнях искусственный интеллект должен быть достаточно прост, вплоть до того, что он ничего не должен знать о параметрах орудия. Орудие имеет ограниченное количество боеприпасов — 20 зарядов. До того как боезапас иссякнет, пушка должна поразить хотя бы одну цель. Все, что может узнать ваш ИИ — это расстояние, на котором находится цель, и расстояние, на которое улетел снаряд после выстрела. Искусственный интеллект может управлять лишь углом наклона орудия.

Ваши коллеги уже создали для вас простую тестовую сцену, и даже написали за вас API. Вам лишь необходимо реализовать интерфейс. Ссылка на репозиторий с проектом: https://github.com/Lukaviy/AI-for-defense.git.

Также, ваши коллеги еще не до конца уверены в выборе игрового движка. Возможно в скором будущем они перейдут на другой. Поэтому они убедительно просят вас воздержаться от использования функций, зависимых от Unity. (Вместо Mathf использовать System.Math, и т.д.)

Необходимо реализовать класс CannonAI со следующим интерфейсом:

     
        public class CannonAI : ICannonAI
        {
            // Расстояние на котором находится цель
            void SetTarget(double distance);
            // Угол наклона в градусах в который нужно установить пушку перед выстрелом
            double GetShootAngle();
            // Информация о дальности полета снаряда
            void FeedbackHitDistance(double distance);
        }
      
   

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

Файл с решением должен содержать только реализацию класса CannonAI. В качестве среды программирования необходимо выбирать C#.

Ограничения

Гарантируется, что пушка всегда может достать до противника.

45 ≤ Angle ≤ 90

10 ≤ Distance ≤ 106


0.040s 0.007s 13