Mã cho tôi một số golf


15

Nếu bạn chưa chơi golf trước đây, thì đây là danh sách các thuật ngữ liên quan đến golf tôi sử dụng trong câu hỏi này

  • Bắn , còn được gọi là đột quỵ : Mỗi lần bóng được đánh, đây là một cú sút.
  • Lỗ : Một sân golf được chia thành các lỗ, trong đó mục tiêu là đánh một quả bóng từ vị trí được chỉ định này sang vị trí khác trong càng ít cú đánh càng tốt.
  • Tee : Nơi bạn bắt đầu một cái lỗ.
  • Pin hoặc Flag : Nơi bạn hoàn thành một lỗ
  • Fairway , Rough , WaterGreen : Các tính năng trên sân golf ảnh hưởng đến cách người ta chơi bóng trong đời thực. (Làm thế nào chúng ảnh hưởng đến chương trình được chỉ định dưới đây)

Tôi sẽ ra ngoài chơi golf vào ngày mai và tôi thấy rằng đôi khi, tôi gặp khó khăn trong việc tìm ra câu lạc bộ nào sẽ sử dụng để đánh vào một sân nào đó. Vì vậy, tôi quyết định viết ra câu lạc bộ của mình và sân của họ mỗi lần bắn.

Giả định đầu tiên: Tất cả các lỗ là do phía bắc của hộp tee của họ.

Tất cả các sân này đo lường khả năng cho quả bóng đi được bao xa về phía bắc. Quả bóng sẽ đi một khoảng cách nguyên ngẫu nhiên giữa các giới hạn được chỉ định cho mỗi câu lạc bộ (bao gồm).

Là một tay golf bậc thầy, không có cú đánh nào của tôi có sự dịch chuyển ngang. Điều này có nghĩa là tất cả các bức ảnh của tôi đi theo một đường thẳng trực tiếp tại cờ.

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)

Là một người thích lập trình, tôi quyết định rằng tôi muốn làm mô hình một vòng golf và đặt mục tiêu cho việc tôi muốn làm tốt như thế nào vào ngày mai. Tuy nhiên, giống như bất kỳ lập trình viên nghiệp dư nào, sau mười phút, tôi đã bỏ cuộc và yêu cầu trợ giúp về Stack Overflow (chỉ đùa thôi). Dưới đây là một số dữ liệu về khóa học.

Giả định thứ hai: Lỗ địa lý

  • Tất cả các số mô tả khoảng cách trên khóa học là số nguyên.

  • Mỗi lỗ là một đường thẳng. Khoảng cách đường thẳng giữa mỗi lỗ và chốt (điểm cuối của lỗ) là Length.

  • Fairways là các đoạn có chiều dài được xác định bởi flen. Giá trị được liệt kê flenlà phạm vi sân phía bắc từ tee nơi fairway.

  • Các mối nguy hiểm về nước là các phân đoạn có chiều dài được xác định bởi wlen, có các tính chất tương tự như flen.

  • Màu xanh lá cây có chiều dài được xác định bởi glen.

  • Tất cả các phần của khóa học không phải là fairway, nước hoặc màu xanh lá cây là thô.

Dưới đây là một biểu đồ mô tả từng lỗ trên khóa học.

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

Cách chơi Golf (cho chương trình này)

  • Luôn luôn nhắm chính xác vào cờ.
  • Đánh bóng càng gần chốt càng tốt, cố gắng giữ bóng trên fairway hoặc (tốt nhất là) trên green.
  • Khi bạn bắn một phát xuống nước, phát bắn tiếp theo của bạn phải được phát từ cùng một nơi với phát bắn xuống nước.
  • Một khi quả bóng rơi trên green, chỉ có thể sử dụng gậy putter. Nếu quả bóng hạ cánh nghiêm ngặt hơn 5 yard từ pin, thì tôi putt hai lần. Nếu không, tôi putt một lần.
  • Có thể bắn một phát qua pin.

Chấm điểm

Điểm của tôi trên một cái lỗ là số lần tôi chụp, cộng với một lần cho mỗi lần tôi hạ cánh xuống nước hoặc trong nước.

Chương trình

Được rồi, đó là rất nhiều quy tắc, bây giờ hãy nói về chương trình.

Khóa học nên được xác định như trên trong chương trình , bởi vì khóa học là không đổi. Tuy nhiên, các gôn thủ khác nhau có khoảng cách khác nhau cho mỗi cú đánh, do đó, đầu vào của STDIN phải là một tập hợp các khoảng sân, được sắp xếp theo thứ tự tăng dần số câu lạc bộ và cách nhau bằng dấu phẩy (không có khoảng trắng).

Đầu ra phải là cách tôi "chơi" vòng golf. Số tổ chức nên được chỉ định vào đầu mỗi dòng như Hole #:nơi #là lỗ hiện hành. Mỗi cú đánh không phải là cú đánh có dạng sau : {club,distance of shot,condition of ball,distance to pin}. Các chi tiết của ảnh nên được phân tách bằng dấu phẩy nhưng không có khoảng trắng theo thứ tự trên. Các bức ảnh nên được viết theo thứ tự cách chúng được chơi và cách nhau bởi một khoảng trắng. Khi quả bóng rơi xuống màu xanh lá cây, chương trình sẽ in số lượng gậy tôi lấy, theo định dạng {# putts}. Ở cuối mỗi dòng, số lượng ảnh tôi chụp trên lỗ phải được tách biệt với các ảnh khác bằng khoảng trắng và được in dưới dạng(#). Mỗi lỗ nên nằm trên một dòng riêng và được viết theo thứ tự. Cuối cùng, trên dòng cuối cùng (thứ mười) của chương trình, tổng số ảnh chụp cho vòng nên được in là Total: # shots.

Không có "chiến lược" nào mà chương trình của bạn bắt buộc phải thực hiện. Bạn có thể viết một chương trình với bất kỳ chiến lược nào bạn muốn. Các chiến lược ví dụ bao gồm tối đa hóa phần trăm cơ hội hạ cánh trên green và tối đa hóa khoảng cách của mỗi lần bắn cho đến khi chạm tới lỗ.

MẪU ĐẦU VÀO

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

MẪU ĐẦU RA

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

Tôi sẽ thừa nhận, đây là một thử thách khá tham vọng cho bài đăng đầu tiên trên CG.SE, vì vậy tôi rất vui khi nói về cách cải thiện thử thách này trong các bình luận. Cảm ơn sự giúp đỡ của bạn.


2
Tôi thực sự đánh giá cao điều đó nếu, đối với chúng tôi, những người không chơi gôn, bạn không sử dụng nhiều thuật ngữ chơi gôn (ví dụ: "hộp tee" và "dịch chuyển ngang"). :)
kirbyfan64sos

Tôi sẽ thêm một danh sách các thuật ngữ liên quan đến golf. Khi chơi gôn, quả bóng không phải lúc nào cũng đi thẳng, vì vậy tôi chỉ nói rằng quả bóng luôn đi thẳng về phía lỗ, và do đó không có bất kỳ sự dịch chuyển ngang nào.
Arcturus

Giả sử pin ở khoảng cách 301 yard, và có fairway từ 0~299bãi, xanh từ 300~315bãi và nước từ 316~330bãi. Câu lạc bộ nào sẽ được chọn? Điều gì nếu nước được thay thế bằng thô?
lirtosiast

Lý tưởng nhất, chương trình sẽ có thể đưa ra chiến lược của riêng mình.
Arcturus

"Chiến lược tối ưu" nghĩa là gì? Giảm thiểu số lượng trung bình của đột quỵ? Đối với tiêu chí chiến thắng tôi sẽ đi với môn đánh gôn.
lirtosiast

Câu trả lời:


9

Python trung bình 2,7: 43 40,5

Đây là bài viết đầu tiên của tôi ở đây vì vậy hãy chịu đựng với tôi.

Vì người đăng đã nghĩ đến việc coi điều này giống như một thử thách lập trình, chứ không phải chơi golf, tôi đã giải quyết nó như một thử thách lập trình nhiều hơn. Tôi đã cố gắng giữ cho giải pháp của mình và bắn logic đơn giản nhưng nó trở nên xấu xí hơn khi mọi thứ trở nên phức tạp nhanh chóng.

Mã của tôi

Một số điều cần suy nghĩ trong khi đọc: chương trình tạo ra một danh sách các câu lạc bộ được sử dụng gọi là 'câu lạc bộ' và một danh sách gọi là 'khoảng cách' là khoảng cách quả bóng đã đi từ tee, hlen là chiều dài của lỗ, d1s là khoảng cách mỗi lần bắn đi.

Đầu tiên tôi xác định khóa học. Mỗi fairway, nước và chiều dài màu xanh lá cây phải được xác định để sau này chương trình có thể kiểm tra tình trạng của quả bóng, vì vậy tôi đã thêm các giá trị không nguyên cho các phần của khóa học không tồn tại.

from random import randint
import numpy as np

#Hole      Length     flen               wlen           glen    Name 
hole1 = [    401,     54, 390,       390.5, 390.5,    391, 425, 'Hole 1']
hole2 = [    171,    0.5, 0.5,           1, 165,      166, 179, 'Hole 2']
hole3 = [    438,     41, 392,         393, 420,      421, 445, 'Hole 3']
hole4 = [    553,     30, 549,         282, 353,      550, 589, 'Hole 4']
hole5 = [    389,     48, 372,         1.5, 1.5,      373, 404, 'Hole 5']
hole6 = [    133,    0.5, 0.5,         1.5, 1.5,      125, 138, 'Hole 6']
hole7 = [    496,     37, 413,         414, 484,      484, 502, 'Hole 7']
hole8 = [    415,     50, 391,         1.5, 1.5,      392, 420, 'Hole 8']
hole9 = [    320,     23, 258,         259, 303,      304, 327, 'Hole 9']

holes = [hole1, hole2, hole3, hole4, hole5, hole6, hole7, hole8, hole9]

Ở đây tôi xác định logic chính cho việc chọn một câu lạc bộ. Chương trình cố gắng tối đa hóa khoảng cách bằng cách chọn trình điều khiển cho tất cả các độ dài lớn hơn khoảng cách trình điều khiển tối đa và chọn một câu lạc bộ có phạm vi chứa khoảng cách đến lỗ khác. Điều này đòi hỏi phạm vi cung cấp bởi đầu vào câu lạc bộ phải liên tục, tức là không có khoảng trống trong khoảng cách bắn. Một yêu cầu thực tế vì người ta có thể đánh vào một câu lạc bộ mà không cần backswing đầy đủ để giới hạn khoảng cách phát bắn của họ đến khoảng cách tối đa của câu lạc bộ mạnh nhất tiếp theo.

def stroke(distance):
    Length = abs(hlen - distance)
    if Length >= Driver_a:
        club = 'Driver'
        d = randint(Driver_a,Driver_b)
    elif Length >= Wood3_a and Length <= Wood3_b:
        club = '3-Wood'
        d = randint(Wood3_a,Wood3_b)
    elif Length >= Wood5_a and Length <= Wood5_b:
        club = '5-Wood'
        d = randint(Wood5_a,Wood5_b)
    elif Length >= Iron3_a and Length <= Iron3_b:
        club = '3-Iron'
        d = randint(Iron3_a,Iron3_b)
    elif Length >= Iron4_a and Length <= Iron4_b:
        club = '4-Iron'
        d = randint(Iron4_a,Iron4_b)
    elif Length >= Iron5_a and Length <= Iron5_b:
        club = '5-Iron'
        d = randint(Iron5_a,Iron5_b)
    elif Length >= Iron6_a and Length <= Iron6_b:
        club = '6-Iron'
        d = randint(Iron6_a,Iron6_b)
    elif Length >= Iron7_a and Length <= Iron7_b:
        club = '7-Iron'
        d = randint(Iron7_a,Iron7_b)
    elif Length >= Iron8_a and Length <= Iron8_b:
        club = '8-Iron'
        d = randint(Iron8_a,Iron8_b)
    elif Length >= Iron9_a and Length <= Iron9_b:
        club = '9-Iron'
        d = randint(Iron9_a,Iron9_b)
    elif Length >= Pwedge_a and Length <= Pwedge_b:
        club = 'P wedge'
        d = randint(Pwedge_a,Pwedge_b)
    elif Length >= Swedge_a and Length <= Swedge_b:
        club = 'S wedge'
        d = randint(Swedge_a,Swedge_b)
    elif Length >= Lwedge_a and Length <= Lwedge_b:
        club = 'L wedge'
        d = randint(Lwedge_a,Lwedge_b)        
    else : print 'stroke error'
    return club, d

Tiếp theo, tôi định nghĩa một hàm put mà hai putts cho tất cả các chiều dài lớn hơn 5 yard vào lỗ và một putt cho 5 và ít hơn. Tôi cũng bao gồm một tùy chọn để đánh bóng trực tiếp vào lỗ gọi là 'chip in'.

def putt(distance):
    Length = abs(hlen - distance)
    if Length > 5:
        club = '2 putts'
    elif Length == 0:
        club = 'chip in'
    else:
        club = '1 putt'
    return club

Đây là nơi chiến lược có một chút sôi nổi. Để giữ cho nó đơn giản và cũng tránh bị kẹt trong vòng lái xe xuống nước chỉ để thả quả bóng vào vị trí của cú đánh trước đó và lái xuống nước một lần nữa, tôi thực sự quay lại, đánh bóng ngược lại bằng nêm cát và sau đó có mã đánh giá lần bắn lần nữa với hy vọng bắn ngay trước mặt nước để lần bắn tiếp theo có thể xóa nó. Chiến lược này bị phạt bởi hình phạt thô nhưng có hiệu quả để làm sạch nước.

def water():
    club = 'S wedge'
    d = randint(50,79)
    return club, d

Chương trình này đếm số nét trên mỗi lỗ sau khi lỗ đó được phát. Nó bổ sung các hình phạt cho những cú đánh thô bạo và thêm các hình phạt cho việc đánh vào nước bằng cách tóm tắt một mảng gọi là nước được nối sau mỗi lần bắn nước. Điều này lợi dụng thực tế là fairway luôn dẫn đến nước hoặc màu xanh lá cây cho mọi lỗ trong khóa học. Nó sẽ phải được thay đổi cho các khóa học có phần thô ở giữa fairway.

def countstrokes(clubs, distances, waters):
    distances = np.array(distances)
    mask1 = distances < flen1
    mask2 = distances > grn2
    extra = sum(mask1*1)+sum(mask2*1) + sum(waters)
    if clubs[-1] == 'chip in' : strokes = len(clubs)-1+extra
    elif clubs[-1] == '2 putts' : strokes = len(clubs) +1+extra
    elif clubs[-1] == '1 putt' : strokes = len(clubs)+extra
    else : print 'strokes error'
    return strokes

Sau khi mã chính chạy, điều kiện nhìn vào khoảng cách quả bóng ở trong lỗ và báo cáo tình trạng của quả bóng. Tôi gặp phải một vấn đề với điều kiện vì cách tôi đối xử với việc đánh bóng xuống nước trong chương trình chính. Trong chương trình, nếu quả bóng bị rơi xuống nước, nó sẽ ngay lập tức được di chuyển trở lại vị trí nơi cú đánh được bắn trúng. Khoảng cách được ghi lại sau khi quả bóng được di chuyển trở lại để điều kiện của quả bóng không thể là 'nước'. Nếu bạn đánh bóng từ tee trên hố 4 xuống nước, chương trình sẽ in khoảng cách bạn chạm bóng và gậy nhưng chiều dài của lỗ sẽ không thay đổi và điều kiện sẽ là 'thô' vì bóng rơi xuống 0 khoảng cách đó là trong thô. Bạn có thể bỏ ghi chú 'nước'

def condition(distances):
    conditions=[]
    for distance in distances:
        if distance >= grn1 and distance <= grn2:
            conditions.append('green')
        elif distance >= flen1 and distance <= flen2:
            conditions.append('fair')
        else:
            conditions.append('rough')
    return conditions

Đây là phần chính của mã tải các lỗ và chơi trò chơi. Sau khi khởi tạo một số điều kiện, mã chạy 'đột quỵ' đánh bóng về phía lỗ, bao gồm đảo ngược nếu lỗ quá mức, cho đến khi gặp nước hoặc màu xanh lá cây. Nếu gặp nước, nó sẽ thêm vào một bộ đếm hình phạt và chạy nước chương trình và sau khi di chuyển quả bóng trở lại vị trí nó bị đánh từ đó. Nếu màu xanh lá cây gặp phải, đặt được gọi và lỗ được chấm dứt. Sau khi khoảng cách và các câu lạc bộ được phân tích để xác định tình trạng của từng cú đánh và các cú đánh được tính.

def golf(driver_a, driver_b, wood3_a, wood3_b, wood5_a, wood5_b, iron3_a, iron3_b, iron4_a, iron4_b, iron5_a, iron5_b, iron6_a, iron6_b, iron7_a, iron7_b, iron8_a, iron8_b, iron9_a, iron9_b, pwedge_a, pwedge_b, swedge_a, swedge_b, lwedge_a, lwedge_b):
    global Driver_a, Driver_b, Wood3_a, Wood3_b, Wood5_a, Wood5_b, Iron3_a, Iron3_b, Iron4_a, Iron4_b, Iron5_a, Iron5_b, Iron6_a, Iron6_b, Iron7_a, Iron7_b, Iron8_a, Iron8_b, Iron9_a, Iron9_b, Pwedge_a, Pwedge_b, Swedge_a, Swedge_b, Lwedge_a, Lwedge_b
    Driver_a, Driver_b, Wood3_a, Wood3_b, Wood5_a, Wood5_b, Iron3_a, Iron3_b, Iron4_a, Iron4_b, Iron5_a, Iron5_b, Iron6_a, Iron6_b, Iron7_a, Iron7_b, Iron8_a, Iron8_b, Iron9_a, Iron9_b, Pwedge_a, Pwedge_b, Swedge_a, Swedge_b, Lwedge_a, Lwedge_b = driver_a, driver_b, wood3_a, wood3_b, wood5_a, wood5_b, iron3_a, iron3_b, iron4_a, iron4_b, iron5_a, iron5_b, iron6_a, iron6_b, iron7_a, iron7_b, iron8_a, iron8_b, iron9_a, iron9_b, pwedge_a, pwedge_b, swedge_a, swedge_b, lwedge_a, lwedge_b
    totals =[]
    for hole in holes:
        distance = 0
        strokes = 0
        clubs = []
        distances = []
        d1s = []
        waters=[]
        global hlen, flen1, flen2, wtr1, wtr2, grn1, grn2
        hlen, flen1, flen2, wtr1, wtr2, grn1, grn2, name = hole
        while True:
            club1, d1 = stroke(distance)
            clubs.append(club1)
            if distance > hlen:
                d1 = -d1
            distance = distance + d1
            d1s.append(d1)
            if distance >= wtr1 and distance <= wtr2:
                #print 'water'
                waters.append(1)
                distance = distance - d1
                distances.append(distance)
                club1, d1 = water()
                if distance < wtr1:
                    d1 = - d1
                distance = distance + d1
                d1s.append(d1)
                clubs.append(club1)
            distances.append(distance)
            if distance >= grn1 and distance <= grn2:
                club1 = putt(distance)
                clubs.append(club1)
                break
        strokes =  countstrokes(clubs, distances, waters)
        totals.append(strokes)
        conditions = condition(distances)
        shots = len(d1s)
        print name, ':',
        for x in xrange(0,shots):
            print '{', clubs[x], ',', d1s[x],',', conditions[x],',', hlen-distances[x], '}',
        print '{',clubs[-1], '}', '{',strokes ,'}'
    print 'Total:', sum(totals), 'shots'
    return sum(totals)

Mã được chạy như thế nào

golf(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)

và bên ngoài trông như thế này:

Hole 1 : { Driver , 308 , fair , 93 } { P wedge , 96 , green , -3 } { 1 putt } { 3 }
Hole 2 : { 6-Iron , 166 , green , 5 } { 1 putt } { 2 }
Hole 3 : { Driver , 321 , fair , 117 } { 9-Iron , 105 , green , 12 } { 2 putts } { 4 }
Hole 4 : { Driver , 305 , rough , 553 } { S wedge , -62 , rough , 615 } { Driver , 326 , fair , 289 } { 3-Wood , 293 , green , -4 } { 1 putt } { 8 }
Hole 5 : { Driver , 323 , fair , 66 } { S wedge , 73 , green , -7 } { 2 putts } { 4 }
Hole 6 : { 8-Iron , 125 , green , 8 } { 2 putts } { 3 }
Hole 7 : { Driver , 314 , fair , 182 } { 5-Iron , 181 , green , 1 } { 1 putt } { 3 }
Hole 8 : { Driver , 324 , fair , 91 } { P wedge , 91 , green , 0 } { chip in } { 2 }
Hole 9 : { Driver , 317 , green , 3 } { 1 putt } { 2 }
Total: 31 shots

Đây là một trong những điểm thấp nhất trong nhiều thử nghiệm, với mức thấp nhất tuyệt đối là 26 trong 100.000 lần chạy. Nhưng vẫn dưới một mệnh giá điển hình 34-36 thậm chí với 8 nét trên lỗ 4.

Tôi sẽ bao gồm mã tôi đã sử dụng để tìm phân phối trò chơi với các câu lạc bộ được chỉ định ở trên.

import matplotlib.pyplot as plt
class histcheck(object):

    def __init__(self):
        self = self

    def rungolf(self, n=10000):
        results=[]
        for x in xrange(0,n):
            shots = golf(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)
            results.append(shots)
        self.results = results

    def histo(self, n=20):
        plt.figure(figsize=(12,12))
        plt.hist(self.results, bins=(n))
        plt.title("Histogram")
        plt.xlabel("Shots")
        plt.ylabel("Frequency")
        plt.show()

Đang chạy

play = histcheck()
play.rungolf()
play.hist()

đưa ra biểu đồ sau Biểu đồ Golf

và giá trị trung bình và trung bình có thể được tìm thấy bằng cách sử dụng

np.mean(play.results)
np.meadian(play.results)

trung bình khoảng 43 và trung bình là 41. Không quá tệ cho 9 lỗ với tối ưu hóa bắn đơn giản.

Bây giờ tất cả là của bạn

Hãy tiếp tục và sao chép và điều chỉnh chương trình của tôi và đánh giá nó bằng các công cụ của tôi để giảm số lượng ảnh chụp trung bình. Hãy cho tôi biết nếu có bất kỳ kịch bản nào tôi không tính đến hoặc tiếp tục và tạo một phiên bản chơi gôn. Tôi nghĩ rằng chương trình tốt nhất sẽ là chương trình trả về những bức ảnh trung bình thấp nhất cho một số đầu vào của câu lạc bộ. Mã của tôi không phải là lựa chọn tốt nhất cho điều đó nhưng tôi nghĩ tôi sẽ bắt đầu.

Cập nhật

def water():
    if clubs[-1] =='S wedge':
        club = 'S wedge'
        d = randint(50,79)
    elif clubs[-1] !='S wedge':
        club = 'S wedge'
        d = -randint(50,79)
    else: print 'water error'
    return club, d

Bằng cách thay đổi logic nước để nó cố gắng đánh bóng về phía trước một lượng nhỏ sau khi gặp nước thay vì lùi lại nếu câu lạc bộ trước đó không phải là nêm cát, nó đã cải thiện trung bình lên 40,5 và trung bình thành 39 sau khi thử nghiệm với một triệu lượt chạy. Tối thiểu 23, tối đa 135. Đôi khi bạn gặp may mắn, đôi khi bạn không. Kiểm tra biểu đồ mới.

Biểu đồ2

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.