С учетом списка ям, зеленых размеров, угла среза и максимального расстояния вычислите результат игры в гольф .
Предположения
- Земля плоская
- Вся зелень круговая
- Угол среза будет от -45 до 45 градусов и будет дан в градусах
- Все расстояния в одной метрике (ярды или метры, не имеет значения)
- Запрещено, за препятствиями или изломами
- Максимальный счет на любую лунку 8
- Все кадры перемещаются на меньшее расстояние или максимальное расстояние до отверстия в направлении, определяемом углом к отверстию плюс угол среза.
- Расстояние измеряется как прямая линия или евклидово расстояние между начальной и конечной точкой.
- Максимальное расстояние и угол среза одинаковы для всех снимков на всех отверстиях
- Гольфист всегда наносит два удара один раз на зеленый (или точно на край зеленого).
пример
Давайте посмотрим на хакера из тестового примера № 5 ниже для дыры № 2. Хакер может поразить мяч 320 ярдов, но всегда нарезает 30 градусов. Если мы предположим без ограничения общности, что поле для тройника находится на уровне {0,0}, а зеленый - на {497,0}, то он выполнит выстрелы в следующие точки, достигнув зеленого с 7-м выстрелом:
{{0.,0.},{277.128,-160.},{547.543,-131.372},{569.457,7.67088},{502.872,37.2564},{479.159,7.92741},{490.646,-7.85868},{500.078,-4.22987}}
На данный момент его счет будет 9 из-за двух необходимых ударов, поэтому окончательный счет для него ограничен 8, согласно предположениям.
Графически это будет выглядеть так:
Тестовые случаи
Все тестовые случаи имеют стандартные 18-луночные курсы
Case#1
{MaxDistance->280,SliceAngle->10,HoleDistances->{181,368,161,416,158,526,377,427,509,148,405,443,510,494,396,388,483,172},GreenDiameters->{26,18,17,23,27,23,21,23,25,21,19,24,21,23,25,24,22,22}}
Scores:
{4,5,4,5,4,5,5,5,5,4,5,5,5,5,5,5,5,4}
Output: 85
Case#2 (same course as Test Case #1, shorter more accurate golfer)
{MaxDistance->180,SliceAngle->5,HoleDistances->{181,368,161,416,158,526,377,427,509,148,405,443,510,494,396,388,483,172},GreenDiameters->{26,18,17,23,27,23,21,23,25,21,19,24,21,23,25,24,22,22}}
Scores:
{4,5,4,5,4,6,5,5,6,4,5,5,6,6,5,5,5,4}
Output: 89
Case#3 (Same golfer as test case #1, shorter course)
{MaxDistance->280,SliceAngle->10,HoleDistances->{147,497,110,528,409,118,196,154,134,514,374,491,131,138,523,478,481,494},GreenDiameters->{32,16,36,25,32,20,30,30,33,29,25,26,26,25,33,28,21,28}}
Scores:
{4,5,4,5,5,4,4,4,4,5,5,5,4,4,5,5,5,5}
Output: 82
Case#4 (Same course as test case #3)
{MaxDistance->180,SliceAngle->5,HoleDistances->{147,497,110,528,409,118,196,154,134,514,374,491,131,138,523,478,481,494},GreenDiameters->{32,16,36,25,32,20,30,30,33,29,25,26,26,25,33,28,21,28}}
Scores:
{3,6,3,6,5,4,4,3,3,5,5,5,3,3,5,5,6,5}
Output: 79
Case#5 (Hacker)
{MaxDistance->320,SliceAngle->30,HoleDistances->{147,497,110,528,409,118,196,154,134,514,374,491,131,138,523,478,481,494},GreenDiameters->{32,16,36,25,32,20,30,30,33,29,25,26,26,25,33,28,21,28}}
Scores:
{6,8,5,8,7,6,6,6,6,8,8,8,6,6,8,8,8,8}
Output: 126
правила
- Любой формат может быть использован для ввода. Выход - это просто число смоделированных штрихов, поэтому должно быть целым числом.
- Это код-гольф, поэтому выигрывает самый короткий ответ в байтах. Применяются стандартные лазейки.
MaxDistance
лунки никогда не понадобится более 6 выстрелов ?
GreenDiameter/2
в виду , в этом случае да, так как счет ограничен до 8 и всегда есть 2 патта.