À partir d'une liste de mètres de trous, de tailles vertes, d'un angle de tranche et d'une distance maximale, calculez un score de golf .
Hypothèses
- La terre est plate
- Tous les verts sont circulaires
- L'angle de coupe sera compris entre -45 et 45 degrés et sera donné en degrés
- Toutes les distances dans la même métrique (yards ou mètres, peu importe)
- Pas de limites, d'obstacles ou de doglegs
- Le score maximum sur n'importe quel trou est de 8
- Tous les tirs parcourent la moindre distance maximale ou distance au trou, dans une direction définie par l'angle du trou plus l'angle de la tranche.
- La distance est mesurée comme la ligne droite ou la distance euclidienne entre le point de départ et le point d'arrivée.
- La distance maximale et l'angle de coupe sont les mêmes pour toutes les prises de vue sur tous les trous
- Le golfeur fait toujours deux coups roulés une fois sur le green (ou exactement au bord du green).
Exemple
Regardons le pirate du cas de test n ° 5 ci-dessous pour le trou n ° 2. Le pirate peut frapper la balle à 320 mètres, mais tranche toujours à 30 degrés. Si nous supposons sans perte de généralité que la zone de départ est à {0,0} et que le vert est à {497,0}, alors il frappera les tirs aux points suivants, arrivant sur le vert avec le 7ème coup:
{{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}}
À ce stade, son score serait de 9 en raison des deux putts requis, donc le score final pour lui est plafonné à 8, selon les hypothèses.
Graphiquement, cela ressemblera à ceci:
Cas de test
Tous les cas de test ont des parcours standard de 18 trous
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
Règles
- N'importe quel format peut être utilisé pour l'entrée. La sortie est simplement le nombre de traits simulés, donc devrait être un entier.
- Il s'agit de code-golf, donc la réponse la plus courte en octets l'emporte. Des échappatoires standard s'appliquent.
MaxDistance
du trou?
GreenDiameter/2
, dans ce cas, oui, car le score est plafonné à 8 et il y a toujours 2 putts.