Wenn Sie noch nie Golf gespielt haben, finden Sie hier eine Liste der Golfbegriffe, die ich in dieser Frage verwende
- Schuss , auch Schlaganfall genannt : Jedes Mal, wenn der Ball geschlagen wird, ist dies ein Schuss.
- Loch : Ein Golfplatz ist in Löcher unterteilt, auf denen ein Ball mit möglichst wenigen Schlägen von einem bestimmten Ort zum anderen geschlagen werden soll.
- T-Stück : Wo Sie ein Loch beginnen.
- Anstecknadel oder Fahne : Wo Sie ein Loch beenden
- Fairway , Rough , Water und Green : Merkmale auf einem Golfplatz, die sich darauf auswirken, wie man den Ball im wirklichen Leben spielt. (Wie sie sich auf das Programm auswirken, ist unten angegeben)
Ich gehe morgen zum Golfspielen und finde, dass ich manchmal Probleme habe, herauszufinden, mit welchem Schläger ich eine bestimmte Lauflänge schlagen soll. Also habe ich beschlossen, meine Schläger und ihre Laufleistung pro Schuss aufzuschreiben.
Erste Annahme: Alle Löcher sind nördlich ihrer Abschlagboxen fällig.
Alle diese Meter messen die Möglichkeiten, wie weit der Ball nach Norden wandert. Der Ball legt eine zufällige, ganzzahlige Distanz zwischen den für jeden Verein (einschließlich) festgelegten Grenzen zurück.
Als Golfmeister hat keiner meiner Schläge eine horizontale Verschiebung. Dies bedeutet, dass alle meine Schüsse in einer geraden Linie direkt auf die Flagge gerichtet sind.
Club # Club Yardage
1 Driver 300-330
2 3-Wood 270-299
3 5-Wood 240-269
4 3-Iron 220-239
5 4-Iron 200-219
6 5-Iron 180-199
7 6-Iron 160-179
8 7-Iron 140-159
9 8-Iron 120-139
10 9-Iron 100-119
11 P-Wedge 80-99
12 S-Wedge 50-79
13 L-Wedge 0-49
14 Putter (only on green)
Als eine Person, die Spaß am Programmieren hat, entscheide ich mich, eine Runde Golf zu spielen und mir das Ziel zu setzen, wie gut ich morgen sein möchte. Wie jeder Hobby-Programmierer gab ich jedoch nach zehn Minuten auf und bat um Hilfe bei Stack Overflow (nur ein Scherz). Hier finden Sie weitere Daten zum Kurs.
Zweite Annahme: Lochgeographie
Alle Zahlen, die Entfernungen auf dem Kurs beschreiben, sind ganze Zahlen.
Jedes Loch ist eine gerade Linie. Der geradlinige Abstand zwischen jedem Loch und dem Stift (dem Ende des Lochs) beträgt
Length
.Fairways sind Segmente mit einer Länge von
flen
. Der angegebene Wertflen
ist der Wertebereich nördlich des Abschlags, auf dem sich das Fairway befindet.Wasserhindernisse sind Segmente, deren Länge durch definiert ist
wlen
und die die gleichen Eigenschaften haben wieflen
.Das Grün hat eine Länge definiert durch
glen
.Alle Teile der Strecke, die weder Fairway noch Wasser oder Grün sind, sind rau.
Hier ist eine Tabelle, die jedes Loch auf dem Platz beschreibt.
Hole # Length flen wlen glen
1 401 54-390 391-425
2 171 1-165 166-179
3 438 41-392 393-420 421-445
4 553 30-281,354-549 282-353 550-589
5 389 48-372 373-404
6 133 125-138
7 496 37-413 414-484 484-502
8 415 50-391 392-420
9 320 23-258 259-303 304-327
Golf spielen (für dieses Programm)
- Zielen Sie immer genau auf die Flagge.
- Schlagen Sie den Ball so nah wie möglich am Pin und versuchen Sie, den Ball auf dem Fairway oder (vorzugsweise) auf dem Grün zu halten.
- Wenn Sie einen Schuss im Wasser landen, muss Ihr nächster Schuss an derselben Stelle gespielt werden wie der Schuss, der ins Wasser ging.
- Sobald der Ball auf dem Grün landet, kann nur der Putter verwendet werden. Wenn der Ball mehr als 5 Meter vom Pin entfernt landet, putte ich zweimal. Ansonsten putte ich einmal.
- Es ist möglich, einen Schuss an der Nadel vorbei zu schießen.
Wertung
Meine Punktzahl an einem Loch ist die Anzahl der Schläge, die ich mache, plus einen Schlag für jede Landung in rauem oder im Wasser.
Das Programm
Okay, das waren viele Regeln, jetzt lass uns über das Programm sprechen.
Der Kurs sollte wie oben im Programm definiert sein , da der Kurs konstant ist. Unterschiedliche Golfer haben jedoch unterschiedliche Abstände für jeden Schlag. Daher sollte die Eingabe für STDIN eine Reihe von Wertebereichen sein, die in aufsteigender Reihenfolge der Schlägernummern angeordnet und durch Kommas getrennt sind (ohne Leerzeichen).
Die Ausgabe sollte sein, wie ich die Runde des Golfs "spiele". Die Hold-Nummer sollte am Anfang jeder Zeile angegeben werden, da sich Hole #:
dort #
die aktuelle Bohrung befindet. Jeder Schuss, der nicht ein Putt ist die folgende Form: {club,distance of shot,condition of ball,distance to pin}
. Die Details der Aufnahme sollten durch Kommas getrennt sein, aber keine Leerzeichen in der oben angegebenen Reihenfolge. Die Aufnahmen selbst sollten in der Reihenfolge geschrieben werden, in der sie gespielt und durch ein Leerzeichen getrennt werden. Sobald der Ball auf dem Grün landet, sollte das Programm drucken, wie viele Putts ich im Format nehme {# putts}
. Am Ende jeder Zeile sollte die Anzahl der Aufnahmen, die ich auf dem Loch gemacht habe, durch ein Leerzeichen von den anderen Aufnahmen getrennt und als gedruckt werden(#)
. Jedes Loch sollte in einer eigenen Linie stehen und in der richtigen Reihenfolge geschrieben sein. Schließlich sollte in der letzten (zehnten) Zeile des Programms die Gesamtzahl der Aufnahmen für die Runde als ausgedruckt werden Total: # shots
.
Es gibt keine festgelegte "Strategie", die Ihr Programm einhalten muss. Sie können ein Programm mit jeder gewünschten Strategie schreiben. Beispielstrategien umfassen das Maximieren der prozentualen Chance, auf dem Grün zu landen, und das Maximieren der Entfernung jedes Schusses bis zum Erreichen des Lochs.
MUSTER EINGANG
300-330,270-299,240-269,220-239,200-219,180-199,160-179,140-159,120-139,100-119,80-99,50-79,0-49
BEISPIELAUSGABE
Hole 1: {Driver,324,Fairway,77} {S-Wedge,70,Green,7} {Two putts} (4)
Hole 2: {6-Iron,162,Water,171} {6-Iron,168,Green,3} {One putt} (4)
Hole 3: {Driver,301,Fairway,137} {8-Iron,131,Green,6} {Two putts} (4)
Hole 4: {3-Wood,288,Water,553} {3-Wood,276,Fairway,277} {3-Wood,291,Green,14} {Two putts} (6)
Hole 5: {Driver,322,Fairway,67} {S-Wedge,62} {One putt} (3)
Hole 6: {8-Iron,120,Rough,18} {L-Wedge,10,Green,8} {Two putts} (5)
Hole 7: {Driver,325,Fairway,171] {6-Iron,170,Green,1} {One putt} (3)
Hole 8: {Driver,306,Fairway,109} {9-Iron,100,Green,9} {Two putts} (4)
Hole 9: {Driver,308,Green,12} {Two putts} (3)
Total: 36 shots
Ich gebe zu, dies ist eine ziemlich ehrgeizige Herausforderung für einen ersten Beitrag auf CG.SE, daher würde ich mich freuen, in Kommentaren darüber zu sprechen, wie diese Herausforderung verbessert werden kann. Danke für deine Hilfe.
0~299
Yards, Grün von 300~315
Yards und Wasser von 316~330
Yards. Welcher Verein wird ausgewählt? Was ist, wenn das Wasser durch raues ersetzt wird?