আমাকে কিছু গল্ফ কোড করুন


15

আপনি যদি আগে গল্ফ খেলেন না, তবে এই প্রশ্নটিতে আমি গল্ফ সম্পর্কিত পদগুলির ব্যবহার করব

  • শট , একটি স্ট্রোক বলা হয় : প্রতিবার বল আঘাত করা হয়, এটি একটি শট।
  • হোল : একটি গল্ফ কোর্সটি গর্তগুলিতে বিভক্ত হয়, যার লক্ষ্য একটি লক্ষ্য থেকে একটি নির্দিষ্ট জায়গা থেকে অন্য জায়গায় যতটা সম্ভব শট করা সম্ভব hit
  • টি : আপনি যেখানে একটি গর্ত শুরু।
  • পিন বা পতাকা : যেখানে আপনি একটি গর্ত শেষ করুন
  • ফেয়ারওয়ে , রুফ , জল এবং সবুজ : একটি গল্ফ কোর্সের বৈশিষ্ট্য যা বাস্তব জীবনে কীভাবে বলটি খেলবে তা প্রভাবিত করে। (তারা কীভাবে প্রোগ্রামকে প্রভাবিত করে তা নীচে নির্দিষ্ট করা আছে)

আমি আগামীকাল গল্ফ খেলতে যাচ্ছি, এবং আমি দেখতে পাচ্ছি যে মাঝে মাঝে নির্দিষ্ট ইয়ার্ডেজে আঘাত করতে কোন ক্লাবটি ব্যবহার করতে হবে তা বুঝতে আমার সমস্যা হয়। তাই আমি শটপ্রতি আমার ক্লাবগুলি এবং তাদের উঠোনগুলি লিখে রাখার সিদ্ধান্ত নিয়েছি।

প্রথম অনুমান: সমস্ত গর্ত তাদের টি বাক্সের উত্তরে।

এই সমস্ত ইয়ার্ডেজগুলি বলটি কতদূর উত্তর দিকে ভ্রমণ করে তার জন্য সম্ভাবনাগুলি পরিমাপ করে। বলটি প্রতিটি ক্লাবের জন্য অন্তর্ভুক্ত (অন্তর্ভুক্ত) সীমানার মধ্যে একটি এলোমেলো পূর্ণসংখ্যার দূরত্ব ভ্রমণ করবে।

মাস্টার গল্ফার হিসাবে, আমার কোনও শটের কোনও অনুভূমিক শিফট নেই। এর অর্থ হ'ল আমার সমস্ত শটগুলি সরাসরি পতাকাটিতে সোজা লাইনে চলে যায়।

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)

একজন ব্যক্তি যিনি প্রোগ্রামিং উপভোগ করেন, আমি সিদ্ধান্ত নিয়েছি যে আমি একটি গল্ফের একটি রাউন্ড মডেল করতে চাই এবং আগামীকাল আমি কীভাবে আরও ভাল করতে চাই তার জন্য একটি লক্ষ্য নির্ধারণ করতে চাই। তবে, কোনও অপেশাদার প্রোগ্রামারের মতো, দশ মিনিটের পরে, আমি হাল ছেড়ে দিয়ে স্ট্যাক ওভারফ্লোতে (কেবল মজা করে) সহায়তা চেয়েছি। কোর্স সম্পর্কে আরও কিছু তথ্য এখানে দেওয়া হল।

দ্বিতীয় অনুমান: হোল ভূগোল

  • সমস্ত সংখ্যা যা কোর্সের দূরত্বগুলি বর্ণনা করে তারা পূর্ণসংখ্যা হয়।

  • প্রতিটি গর্ত একটি সরলরেখা হয়। প্রতিটি গর্ত এবং পিন (গর্তের শেষ) এর মধ্যে সরলরেখার দূরত্ব Length

  • ফেয়ারওয়েগুলি বিভাগ দ্বারা দৈর্ঘ্য দ্বারা সংজ্ঞায়িত করা হয় flen। তালিকাভুক্ত মান flenটি ফেয়ারওয়ে থেকে উত্তর দিকের উঠোনগুলির পরিসর।

  • পানির ঝুঁকি এমন অংশগুলি যার দৈর্ঘ্য দ্বারা সংজ্ঞায়িত করা হয় wlen, যার সমান বৈশিষ্ট্য রয়েছে flen

  • সবুজ দ্বারা নির্ধারিত দৈর্ঘ্য রয়েছে glen

  • কোর্সের সমস্ত অংশ যা ফেয়ারওয়ে, জল বা সবুজ নয়

কোর্সের প্রতিটি গর্তকে বর্ণনা করার জন্য এখানে একটি চার্ট দেওয়া হয়েছে।

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

গল্ফ কীভাবে খেলবেন (এই প্রোগ্রামের জন্য)

  • সর্বদা পতাকা লক্ষ্য করুন।
  • বলটি ফেয়ারওয়েতে রাখার চেষ্টা করে (সম্ভবত) সবুজ রঙের দিকে পিনের খুব কাছাকাছি বলটি আঘাত করুন।
  • আপনি যখন জলের মধ্যে শট অবতরণ করেন, আপনার পরবর্তী শটটি জলের মধ্যে যে শটটি পড়েছিল সেই জায়গা থেকে খেলতে হবে।
  • বলটি সবুজ রঙে নেমে গেলে কেবল পটারটিই ব্যবহার করা যায়। বলটি যদি পিন থেকে কঠোরভাবে 5 গজের বেশি অবতরণ করে, তবে আমি দু'বার রাখি। অন্যথায়, আমি একবার লাগালাম।
  • পিনের পাশ দিয়ে একটি শট আঘাত করা সম্ভব।

স্কোরিং

একটি গর্তে আমার স্কোরটি আমি যে শটগুলি গ্রহণ করি তা হ'ল প্লাস আমি রুক্ষ বা জলে যতবার নামি প্রতিবারের জন্য একটি স্ট্রোক।

কার্যক্রম

ঠিক আছে, এটি অনেক নিয়ম ছিল, এখন প্রোগ্রাম সম্পর্কে কথা বলা যাক।

কোর্সটি প্রোগ্রামের উপরের হিসাবে সংজ্ঞায়িত করা উচিত , কারণ কোর্সটি ধ্রুবক। বিভিন্ন গল্ফারগুলির অবশ্য প্রতিটি শটের জন্য আলাদা দূরত্ব থাকে, সুতরাং এসটিডিআইএন-এ ইনপুটটি ক্লাবের সংখ্যা ক্রমবর্ধমানভাবে সাজানো এবং কমা দ্বারা পৃথক করা উচিত (কোনও শ্বেতস্থান ছাড়াই) আলাদা ইয়ার্ডেজের একটি সেট হতে হবে।

আউটপুটটি হওয়া উচিত আমি কীভাবে গল্ফের রাউন্ডটি "খেলি"। হোল্ড নম্বরটি প্রতিটি লাইনের শুরুতে বর্তমান গর্ত Hole #:কোথায় #রয়েছে তা নির্দিষ্ট করা উচিত । প্রতিটি শট করে একটি নিরব থাক নয় নীচের ফর্মটির হল: {club,distance of shot,condition of ball,distance to pin}। শটটির বিশদটি কমা দ্বারা আলাদা করা উচিত তবে উপরের ক্রমে কোনও সাদা স্থান নেই। শটগুলি সেগুলি কীভাবে স্থান দ্বারা পৃথক করা হয় এবং কীভাবে পৃথক করা হয় সে অনুযায়ী তাদের লিখতে হবে। বলটি সবুজ রঙে নেমে যাওয়ার পরে, প্রোগ্রামটিতে ফর্ম্যাটটিতে আমি কয়টা পুট নিয়েছি তা মুদ্রণ করা উচিত । প্রতিটি গর্ত তার নিজস্ব লাইনে থাকা উচিত এবং যথাযথভাবে লেখা উচিত। পরিশেষে, প্রোগ্রামটির শেষ (দশম) লাইনে, রাউন্ডের জন্য মোট শটগুলি প্রিন্ট করা উচিত ।{# putts} । প্রতিটি লাইনের শেষে, আমি গর্তটিতে যে শট নিয়েছি তার সংখ্যা অন্য শট থেকে একটি স্পেসের দ্বারা পৃথক করা উচিত এবং প্রিন্ট করা উচিত(#)Total: # shots

আপনার প্রোগ্রামটি গ্রহণ করা দরকার এমন কোনও সেট "কৌশল" নেই। আপনার যে কোনও কৌশল নিয়ে আপনি একটি প্রোগ্রাম লিখতে পারেন। উদাহরণস্বরূপ কৌশলগুলির মধ্যে রয়েছে সবুজটিতে অবতরণের শতকরা সম্ভাবনা সর্বাধিকীকরণ এবং গর্তে পৌঁছা পর্যন্ত প্রতিটি শটের দূরত্বকে সর্বাধিক করে তোলা।

নমুনা ইনপুট

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

নমুনা আউটপুট

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

আমি স্বীকার করব, সিজিএসই-তে প্রথম পোস্টের জন্য এটি একটি বরং উচ্চাকাঙ্ক্ষী চ্যালেঞ্জ, সুতরাং মন্তব্যে এই চ্যালেঞ্জটি কীভাবে উন্নত করা যায় সে সম্পর্কে কথা বলতে পেরে আমি আনন্দিত হব। আপনার সাহায্যের জন্য ধন্যবাদ।


2
আমি সত্যিই এটির প্রশংসা করব যদি আমাদের জন্য নন-গল্ফাররা, আপনি অনেকগুলি গল্ফিং পদ ব্যবহার করেন নি (যেমন "টি বাক্স" এবং "অনুভূমিক শিফট")। :)
kirbyfan64sos

আমি গল্ফ সম্পর্কিত পদগুলির একটি তালিকা যুক্ত করব। গল্ফ খেলে বলটি সর্বদা সোজা হয় না, তাই আমি কেবল বলেছিলাম যে বলটি সর্বদা সরাসরি গর্তের দিকে যায় এবং এর ফলে কোনও অনুভূমিক স্থানান্তর হয় না।
আর্কটরাস

বলুন যে পিনটি 301 গজ এ রয়েছে, এবং এখানে গজগুলি থেকে 0~299ফায়ারওয়ে, 300~315গজ থেকে সবুজ এবং গজ থেকে জল 316~330। কোন ক্লাবটি নির্বাচিত হবে? জল যদি রুক্ষ দ্বারা প্রতিস্থাপিত হয়?
lirtosiast

আদর্শভাবে, প্রোগ্রামটি নিজস্ব কৌশল নিয়ে আসতে সক্ষম হবে।
আর্কটরাস

"অনুকূল কৌশল" বলতে কী বোঝ? স্ট্রোকের সংখ্যা কমিয়ে দিচ্ছেন? বিজয়ী মানদণ্ডের জন্য আমি কোড-গল্ফের সাথে যাব।
lirtosiast

উত্তর:


9

পাইথন 2.7: 43 40.5 শট গড়

এটি এখানে আমার প্রথম পোস্ট তাই আমার সাথে সহ্য করুন।

পোস্টারটি যেহেতু কোড গল্ফ নয়, প্রোগ্রামিং চ্যালেঞ্জের মতো আচরণ করার কথা ভাবছিল, তাই আমি এটিকে আরও প্রোগ্রামিং চ্যালেঞ্জ হিসাবে মোকাবিলা করেছি। আমি আমার সমাধান এবং শট যুক্তি সহজ রাখার চেষ্টা করেছি তবে জিনিসগুলি জটিল হয়ে যাওয়ার কারণে এটি আরও কুশ্রী হয়ে উঠেছে।

আমার কোড

পড়ার সময় কিছু ভাবার বিষয়: প্রোগ্রামটি 'ক্লাব' নামে ব্যবহৃত ক্লাবগুলির একটি তালিকা তৈরি করে এবং 'দূরত্ব' নামে একটি তালিকা তৈরি করে যা বলটি টি থেকে দূরত্বের দূরত্ব, হ্লেইনটি গর্তটির দৈর্ঘ্য, ডি 1 সেগুলি হয় প্রতিটি শট ভ্রমণ দূরত্ব।

প্রথমে আমি কোর্সটি সংজ্ঞায়িত করি। প্রতিটি ফেয়ারওয়ে, জল এবং সবুজ দৈর্ঘ্যকে সংজ্ঞায়িত করতে হয়েছিল তাই পরে প্রোগ্রামটি বলের অবস্থাটি পরীক্ষা করতে পারে, তাই আমি কোর্সের অংশগুলির জন্য অ-পূর্ণসংখ্যার মান যুক্ত করেছি যা বিদ্যমান ছিল না।

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]

এখানে আমি ক্লাবটি বেছে নেওয়ার জন্য মূল যুক্তিটি সংজ্ঞায়িত করেছি। প্রোগ্রামটি সর্বোচ্চ ড্রাইভারের দূরত্বের চেয়ে বেশি দৈর্ঘ্যের জন্য ড্রাইভারকে বেছে নিয়ে দূরত্বকে সর্বাধিক করার চেষ্টা করে এবং অন্যথায় গর্তের দূরত্ব ধারণ করে এমন একটি ক্লাব বেছে নেয়। এটি ক্লাব ইনপুট দ্বারা সরবরাহিত পরিসীমা অবিচ্ছিন্ন হওয়া দরকার, শট দূরত্বে কোনও ফাঁক নেই। বাস্তবের প্রয়োজনীয়তা যেহেতু কেউ তার শক্তির ক্লাবের সর্বাধিক দূরত্বকে পরবর্তী শক্তিশালী ক্লাবের সর্বাধিক দূরত্বে সীমাবদ্ধ করতে পুরো ব্যাকসুই ছাড়াই কোনও ক্লাবকে আঘাত করতে পারে।

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

এরপরে, আমি একটি পুট ফাংশনটি সংজ্ঞায়িত করি যা গর্তে 5 গজের চেয়েও বেশি দৈর্ঘ্যের জন্য দুটি পুট এবং 5 এবং তার চেয়ে কমের জন্য একটি পুট থাকে। আমি 'চিপ ইন' নামক গর্তটিতে সরাসরি বলটি আঘাত করার জন্য একটি বিকল্প অন্তর্ভুক্ত করি।

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

কৌশলটি এখানে কিছুটা মজার হয়। এটি সহজ রাখার জন্য এবং কেবল আগের শটটির স্থানে বল ফেলে আবার পানিতে চালিত করতে জলে ড্রাইভিংয়ের একটি লুপে আটকাতে বাধা দেয়, আমি আসলে ব্যাকট্র্যাক করে বালটি বেঁধে দিয়ে পিছনে বলটি আঘাত করি এবং তারপরে কোডটি শটটিকে আবার মূল্যায়ন করুন আশা করি জলের ঠিক সামনে শুটিং করা যাতে পরবর্তী শটটি এটি পরিষ্কার করতে পারে। এই কৌশলটি মোটামুটি দণ্ড দ্বারা দন্ডিত হয়েছে তবে জল পরিষ্কার করার জন্য কার্যকর।

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

এই প্রোগ্রামটি সেই গর্তটি খেলার পরে গর্তে স্ট্রোকের সংখ্যা গণনা করে। এটি রুক্ষ শটগুলির জন্য জরিমানা যুক্ত করে এবং প্রতিটি জলের শটের পরে যুক্ত হওয়া জল নামে একটি অ্যারে যোগ করে জলে আঘাত করার জন্য শাস্তি যুক্ত করে। এটি এই ফায়ারওয়েটি সর্বদা জলের বা কোর্সের প্রতিটি গর্তের জন্য সবুজ রঙের দিকে নিয়ে যায় তার সুবিধা গ্রহণ করে। ফেয়ারওয়ের মাঝখানে মোটামুটি রয়েছে এমন কোর্সের জন্য এটি পরিবর্তন করতে হবে।

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

মূল কোডটি চালানোর পরে, শর্তটি গর্তের সময় বলটি যে দূরত্বের ছিল তার দিকে নজর দেয় এবং বলটির অবস্থার কথা জানায়। মূল প্রোগ্রামটিতে জলের মধ্যে বলটি আঘাত করার সাথে আমি যেভাবে আচরণ করেছি তার কারণে আমি শর্ত নিয়ে একটি সমস্যার মধ্যে পড়েছিলাম। প্রোগ্রামে, বলটি জলে আঘাত করা হলে, গুলি সঙ্গে সঙ্গে আঘাত করা হয়েছে এমন স্থানে তাৎক্ষণিকভাবে আবার স্থানান্তরিত করা হয়েছিল। বলটি সরানোর পরে দূরত্ব রেকর্ড করা হয়েছিল যাতে বলের অবস্থা 'জল' হতে পারে না। যদি আপনি জলের 4 গর্তে টি থেকে বলটি আঘাত করেন তবে প্রোগ্রামটি আপনার বল এবং ক্লাবটির যে দূরত্বটি ছাপিয়েছে তা মুছে দেয় তবে গর্তটির দৈর্ঘ্য অপরিবর্তিত থাকবে এবং বলটি নিক্ষিপ্ত হওয়ার পরে শর্তটি 'রুক্ষ' হবে since 0 দূরত্ব যা রুক্ষ হয়। আপনি একটি মুদ্রণ 'জল' uncomment করতে পারেন

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

এখানে কোডের মূল অংশটি যা গর্তগুলি লোড করে এবং গেমটি খেলে। কিছু শর্ত শুরুর পরে কোডটি 'স্ট্রোক' রান করে গর্তের দিকে বলটিকে আঘাত করে, গর্তটি ওভারশট থাকলে বিপরীত সহ, জল বা সবুজ উভয়ই দেখা না দেওয়া পর্যন্ত। যদি জলের মুখোমুখি হয় তবে এটি একটি পেনাল্টি কাউন্টারে যুক্ত হয় এবং প্রোগ্রামের জল চালায় এবং বলটি যে স্থানে আঘাত পেয়েছিল সে জায়গায় ফিরে যাওয়ার পরে। যদি সবুজ মুখোমুখি হয় তবে পুট বলা হয় এবং গর্তটি সমাপ্ত হয়। দূরত্ব এবং ক্লাবগুলি প্রতিটি শটের অবস্থা নির্ধারণ করার জন্য বিশ্লেষণ করা হয় এবং শটগুলি দীর্ঘায়িত হয়।

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)

কোডটি যেমন চালানো হয়

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)

এবং আউট দেখতে এইরকম দেখাচ্ছে:

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

এটি অনেক পরীক্ষার মধ্যে সর্বনিম্ন স্কোর ছিল, এটি 100,000 রানের মধ্যে সর্বনিম্ন সর্বনিম্ন 26। তবে এখনও গর্ত 4 এ 8 স্ট্রোক সহ 34-36 এর একটি সাধারণ সমুদ্রের নীচে।

আমি উল্লিখিত ক্লাবগুলির সাথে গেমগুলির বিতরণ সন্ধান করতে ব্যবহৃত কোডটি অন্তর্ভুক্ত করব।

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

চলমান

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

নিম্নলিখিত হিস্টোগ্রাম দেয় গল্ফ হিস্টোগ্রাম

এবং গড় এবং মধ্যমা ব্যবহার করে খুঁজে পাওয়া যাবে

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

প্রায় 43 এর গড় এবং 41 এর মধ্যমা simple সাধারণ শট অপ্টিমাইজেশান সহ 9 টি গর্তের জন্য খুব খারাপ নয়।

সব এখন আপনার

এগিয়ে যান এবং আমার প্রোগ্রামটি অনুলিপি করুন এবং ট্যুইট করুন এবং আমার শটগুলির গড় সংখ্যা হ্রাস করতে আমার সরঞ্জামগুলি ব্যবহার করে এটি মূল্যায়ন করুন। আমি এমন কোনও পরিস্থিতি রয়েছে যা আমি অ্যাকাউন্ট না করে বা এগিয়ে গিয়ে একটি গল্ফ সংস্করণ তৈরি করি তা আমাকে জানান। আমি মনে করি যে সেরা প্রোগ্রামটি এমন এক হবে যা বেশিরভাগ ক্লাবের ইনপুটগুলির জন্য সর্বনিম্ন গড় শট দেয় returned আমার কোডটি এর জন্য সেরা বিকল্প নয় তবে আমি ভেবেছিলাম বলটি ঘূর্ণায়মান করব।

হালনাগাদ

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

জলের যুক্তি পরিবর্তন করে যাতে এটি পিছনের পরিবর্তে জলের মুখোমুখি হওয়ার পরে বলটিকে সামান্য পরিমাণে এগিয়ে নিয়ে যাওয়ার চেষ্টা করে যদি পূর্ববর্তী ক্লাবটি বালির আবদ্ধ না হয় তবে এটি গড়টির উন্নতি 40.5 এবং মধ্য দিয়ে একটি পরীক্ষার পরে 39 এ পরিণত হয়েছে মিলিয়ন রান। সর্বনিম্ন 23, সর্বোচ্চ 135. কখনও কখনও আপনি ভাগ্যবান হন, কখনও কখনও আপনি হন না। নতুন হিস্টোগ্রামটি দেখুন।

Histogram2

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.