Jeśli wcześniej nie grałeś w golfa, oto lista terminów związanych z golfem, których używam w tym pytaniu
- Strzał , zwany także uderzeniem : za każdym razem, gdy piłka zostaje uderzona, jest to strzał.
- Dziura : pole golfowe jest podzielone na dziury, w których celem jest uderzenie piłki z jednego wyznaczonego miejsca do drugiego w jak najmniejszej liczbie rzutów.
- Tee : Gdzie zaczynasz dołek.
- Przypinka lub flaga : Gdzie kończysz dziurę
- Fairway , Rough , Water i Green : Funkcje na polu golfowym, które wpływają na sposób gry w piłkę w prawdziwym życiu. (Ich wpływ na program jest określony poniżej)
Jutro idę grać w golfa i czasami mam problem z ustaleniem, jakiego klubu użyć, aby osiągnąć określony dystans. Postanowiłem więc zapisać moje kluby i ich dystanse na strzał.
Pierwsze założenie: wszystkie dziury są na północ od ich tee boxów.
Wszystkie te odcinki mierzą możliwości, jak daleko piłka podróżuje na północ. Piłka pokona losową liczbę całkowitą między granicami określonymi dla każdego klubu (włącznie).
Jako mistrz golfisty żadne z moich ujęć nie ma przesunięcia w poziomie. Oznacza to, że wszystkie moje strzały padają w linii prostej bezpośrednio na flagę.
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)
Jako osoba, która lubi programować, postanawiam, że chcę wymodelować rundę golfa i wyznaczyć sobie cel, jak dobrze chcę jutro. Jednak, jak każdy programista amator, po dziesięciu minutach poddałem się i poprosiłem o pomoc w stosie przepełnienia (tylko żartuję). Oto kilka innych danych na temat kursu.
Drugie założenie: Geografia otworów
Wszystkie liczby opisujące odległości na kursie są liczbami całkowitymi.
Każdy otwór jest linią prostą. Odległość w linii prostej między każdym otworem a sworzniem (koniec otworu) wynosi
Length
.Tor wodny to odcinek o długości określonej przez
flen
. Podana wartośćflen
to zakres odcinków na północ od tee, na której znajduje się tor wodny.Zagrożenia wodne to segmenty, które mają zdefiniowaną długość
wlen
, która ma takie same właściwości jakflen
.Kolor zielony ma długość określoną przez
glen
.Wszystkie części pola, które nie są torami wodnymi, wodnymi lub zielonymi, są nierówne.
Oto tabela opisująca każdą dziurę na kursie.
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
Jak grać w golfa (dla tego programu)
- Zawsze celuj dokładnie w flagę.
- Uderz piłkę jak najbliżej sworznia, starając się utrzymać piłkę na torze wodnym lub (najlepiej) na zieleni.
- Kiedy wylądujesz w wodzie, twój następny strzał musi zostać rozegrany z tego samego miejsca, co strzał, który trafił do wody.
- Gdy piłka wyląduje na zieleni, można użyć tylko miotacza. Jeśli piłka wyląduje dokładnie ponad 5 jardów od sworznia, wtedy uderzam dwa razy. W przeciwnym razie raz postawię.
- Możliwe jest trafienie za pinezkę.
Punktacja
Mój wynik na dołku to liczba wykonanych przeze mnie strzałów plus jedno uderzenie za każdym razem, gdy ląduję na nierówności lub w wodzie.
Program
Okej, to było dużo zasad, teraz porozmawiajmy o programie.
Kurs należy zdefiniować jak wyżej w programie , ponieważ kurs jest stały. Różni golfiści mają jednak różne odległości dla każdego strzału, więc wejściem do STDIN powinien być zestaw zakresów metrażów, ułożonych w kolejności numerów klubów i oddzielonych przecinkami (bez białych znaków).
Efektem powinno być to, jak „gram” w golfa. Numer wstrzymania należy podać na początku każdej linii, Hole #:
gdzie #
jest bieżący otwór. Każdy strzał, który nie jest putt ma postać następującą:{club,distance of shot,condition of ball,distance to pin}
. Szczegóły ujęcia powinny być oddzielone przecinkami, ale bez spacji w powyższej kolejności. Same ujęcia powinny być napisane w kolejności ich odtwarzania i oddzielone spacją. Gdy piłka wyląduje na zielonym, program powinien wydrukować liczbę puttów, które wezmę, w formacie {# putts}
. Na końcu każdej linii liczba zdjęć, które wykonałem na dołku, powinna być oddzielona spacją od innych zdjęć i wydrukowana jako(#)
. Każda dziura powinna znajdować się w osobnej linii i pisać w kolejności. Wreszcie w ostatnim (dziesiątym) wierszu programu należy wydrukować całkowitą liczbę strzałów w rundzie Total: # shots
.
Nie ma określonej „strategii”, którą Twój program musi podjąć. Możesz napisać program z dowolną strategią. Przykładowe strategie obejmują maksymalizację procentowej szansy na lądowanie na zielonym polu i maksymalizację odległości każdego strzału, aż do dołka.
PRZYKŁADOWE WEJŚCIE
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
PRZYKŁADOWA WYDAJNOŚĆ
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
Przyznaję, że jest to dość ambitne wyzwanie dla pierwszego postu na CG.SE, więc chętnie porozmawiam o tym, jak poprawić to wyzwanie w komentarzach. Dziękuję za pomoc
0~299
jardów, zielony od 300~315
jardów i woda z 316~330
jardów. Który klub zostanie wybrany? Co jeśli woda zostanie zastąpiona przez szorstką?