Dato un elenco di yardage buche, dimensioni verdi, un angolo di fetta e una distanza massima, calcolare un punteggio di golf .
ipotesi
- La terra è piatta
- Tutti i verdi sono circolari
- L'angolo di taglio sarà compreso tra -45 e 45 gradi e verrà indicato in gradi
- Tutte le distanze nella stessa metrica (iarde o metri, non importa)
- Nessun limite, ostacolo o dogleg
- Il punteggio massimo per ogni buca è 8
- Tutti i colpi percorrono la distanza minima o massima rispetto al foro, in una direzione definita dall'angolo rispetto al foro più l'angolo di taglio.
- La distanza viene misurata come linea retta o distanza euclidea tra il punto iniziale e quello finale.
- La distanza massima e l'angolo di taglio sono gli stessi per tutti i colpi su tutti i fori
- Il golfista fa sempre due putte una volta sul green (o esattamente sul bordo del green).
Esempio
Diamo un'occhiata all'hacker dal test case # 5 in basso per il buco # 2. L'hacker può colpire la palla 320 iarde, ma taglia sempre 30 gradi. Se assumiamo senza perdita di generalità che il tee box è a {0,0} e il verde è a {497,0}, allora colpirà i colpi nei seguenti punti, arrivando sul verde con il 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}}
A questo punto, il suo punteggio sarebbe 9 a causa dei due put richiesti, quindi il punteggio finale per lui viene limitato a 8, secondo le ipotesi.
Graficamente, sarà simile a questo:

Casi test
Tutti i casi di test hanno percorsi standard a 18 buche
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
Regole
- È possibile utilizzare qualsiasi formato per l'input. L'output è semplicemente il numero di tratti simulati, quindi dovrebbe essere un numero intero.
- Questo è code-golf quindi vince la risposta più breve in byte. Si applicano scappatoie standard.
MaxDistancebuca?
GreenDiameter/2, nel qual caso sì, dato che il punteggio è limitato a 8 e ci sono sempre 2 punti.
