Dada uma lista de jardas de furos, tamanhos verdes, um ângulo de fatia e uma distância máxima, calcule uma pontuação de golfe .
Premissas
- Terra é plana
- Todos os verdes são circulares
- O ângulo da fatia estará entre -45 e 45 graus e será dado em graus
- Todas as distâncias na mesma métrica (jardas ou metros, não importa)
- Não fora dos limites, obstruções ou doglegs
- A pontuação máxima em qualquer buraco é 8
- Todas as fotos percorrem a menor distância máxima ou a distância do furo, em uma direção definida pelo ângulo do furo mais o ângulo da fatia.
- A distância é medida como a linha reta ou a distância euclidiana entre o ponto inicial e final.
- Distância máxima e ângulo de corte são iguais para todas as fotos em todos os buracos
- O jogador de golfe sempre faz duas tacadas uma vez no green (ou exatamente na borda do green).
Exemplo
Vejamos o hacker do caso de teste nº 5 abaixo, referente ao furo nº 2. O hacker pode acertar a bola a 320 jardas, mas sempre corta 30 graus. Se assumirmos, sem perda de generalidade, que a caixa de tee está em {0,0} e o verde está em {497,0}, ele acertará os tiros nos seguintes pontos, chegando ao verde com o 7º tiro:
{{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}}
Nesse ponto, sua pontuação seria 9 devido às duas tacadas necessárias, portanto a pontuação final para ele é limitada a 8, de acordo com as suposições.
Casos de teste
Todos os casos de teste possuem cursos padrão de 18 buracos
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
Regras
- Qualquer formato pode ser usado para a entrada. A saída é simplesmente o número de traços simulados, portanto deve ser um número inteiro.
- Isso é código-golfe, então a resposta mais curta em bytes vence. Aplicam-se brechas padrão.
MaxDistance
do buraco?
GreenDiameter/2
, nesse caso sim, já que o placar é limitado em 8 e sempre há 2 tacadas.