Враховуючи список ямкових отворів, зелені розміри, кут зрізу та максимальну відстань, обчисліть бал для гольфу .
Припущення
- Земля плоска
- Вся зелень кругла
- Кут зрізу буде від -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
отвору?
GreenDiameter/2
, у такому випадку - так, оскільки оцінка обмежена на рівні 8, і завжди є 2 матчі.