Среди игр на тетрадном листочке из школьной поры была такая Гонки — вы тоже помните? На удивление, похожую игру предлагает в своей старинной книжке Жак Арсак — машина в «пошаговом режиме» мчится по извилистой трассе на целочисленной плоскости — и нужно варьируя вектор скорости умудриться не вылететь — но и доехать не черепашьим шагом.
Задача на основе этой игры добавлена на сайт к новогодним праздникам — вдруг кто‑то устанет от оливье раньше времени:) Здесь в качестве входных данных вы получаете описание профиля всей трассы целиком — и нужно предложить последовательность ходов которые позволят безопасно проехать весь маршрут притом со средней скоростью не хуже 3 клеток за ход (считая только продольную компоненту скорости).
Чтобы легче было понять принцип (вдруг кто‑то не играл в детстве) — добавлена небольшая демонстрашка, в которой можно управлять прохождением по трассе кликая или тапая в нужные участки экрана.
В демо экран разделён на три части по горизонтали и на три по вертикали. Кликая или тапая в верхней части вы ускоряете машину, в нижней — замедляете. то же касается левой и правой третей — они позволяют увеличить или уменьшить скорость в соответствующем направлении.
Честно говоря планировалось что в задаче будет спрашиваться наиболее быстрый маршрут — но составляя её я немного усомнился в собственном решении — поэтому она стала чуточку проще.
Конечно, из‑за того что вся трасса видна сразу, отсутствует интрига — но на днях планируется добавить версию игры в которой нужно играть против HTTP‑сервера — и там «видимость» трассы будет ограниченной, так что если не хватает интриги — просто чуть‑чуть подождите :-)
Комментарии (5)
voidptr0
31.12.2024 17:59По трассе составить кривую Безье, а на ее основании сделать дискретизацию по шагам?
RodionGork Автор
31.12.2024 17:59любопытный вариант, хотя мне кажется обычное ДП проще зайдёт :)
если сдать задачу можно посмотреть чужие решения... м.б. я потом этим займусь (хотя не всегда по чужому решению можно понять что тут коллега воплотил)
Germanmidproger
Я тоже от скуки написал копию игры "Виселица". Но, чтобы придумать задачку на программирование, это нужно постараться)))
RodionGork Автор
Виселицы у нас пока нет кстати... что ж, может забацаем и с ней задачку :)