कोड गोल्फ नकली गोल्फ


13

होल यार्डेज, ग्रीन साइज़, स्लाइस एंगल और अधिकतम दूरी की सूची को देखते हुए, एक गोल्फ स्कोर की गणना करें ।

मान्यताओं

  • पृथ्वी चपटी है
  • सभी साग गोलाकार होते हैं
  • टुकड़ा कोण -45 और 45 डिग्री के बीच होगा और डिग्री में दिया जाएगा
  • एक ही मीट्रिक (यार्ड या मीटर में सभी दूरी, कोई फर्क नहीं पड़ता)
  • सीमा से बाहर, अवरोध या डॉगल नहीं
  • किसी भी छेद पर अधिकतम स्कोर 8 है
  • सभी शॉट्स छेद से अधिकतम दूरी या दूरी से कम दूरी की यात्रा करते हैं, कोण द्वारा परिभाषित दिशा में और साथ ही टुकड़ा कोण।
  • दूरी को प्रारंभ और अंत बिंदु के बीच सीधी रेखा या यूक्लिडियन दूरी के रूप में मापा जाता है।
  • अधिकतम दूरी और टुकड़ा कोण सभी छेदों पर सभी शॉट्स के लिए समान हैं
  • गोल्फर हमेशा दो पुट एक बार हरे रंग पर (या बिल्कुल हरे रंग के किनारे पर)।

उदाहरण

आइए छेद # 2 के लिए नीचे दिए गए परीक्षण मामले से हैकर को देखें # 5। हैकर गेंद 320 गज की दूरी पर मार सकता है, लेकिन हमेशा 30 डिग्री तक फिसल जाता है। यदि हम सामान्यता की हानि के बिना मान लेते हैं कि टी बॉक्स {0,0} पर है और ग्रीन {497,0} पर है, तो वह निम्नलिखित बिंदुओं पर शॉट मारेगा, 7 वें शॉट के साथ ग्रीन पर पहुंचेगा:

{{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}}

इस बिंदु पर, आवश्यक दो पुट के कारण उनका स्कोर 9 होगा, इसलिए उनके लिए अंतिम स्कोर मान्यताओं के अनुसार 8 पर छाया हुआ है।

रेखांकन, यह इस तरह दिखेगा: यहाँ छवि विवरण दर्ज करें

परीक्षण के मामलों

सभी परीक्षण मामलों में मानक 18-छेद पाठ्यक्रम हैं

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

नियम

  • इनपुट के लिए किसी भी प्रारूप का उपयोग किया जा सकता है। आउटपुट केवल नकली स्ट्रोक की संख्या है, इसलिए पूर्णांक होना चाहिए।
  • यह इसलिए बाइट्स जीत में सबसे छोटा जवाब है। मानक खामियां लागू होती हैं।

5
मान्यताओं के तहत "पृथ्वी समतल है" क्यों है?
जो राजा

क्या हम यह मान सकते हैं कि MaxDistanceछेद के भीतर गेंद को पाने के लिए 6 से अधिक शॉट कभी नहीं लगेंगे ?
ETHproductions

1
@ जोकिंग मुख्य रूप से, ताकि गोलाकार ज्यामिति के बजाय विमान का उपयोग किया जाता है; दूसरी बात यह है कि गोलाकार मुर्गियों को ग्रहण करने की आवश्यकता नहीं थी :)
केली लोडर

@ETHproductions, अच्छी तरह से आप कर सकते हैं लेकिन यह अनावश्यक है। मुझे लगता है कि शायद आपका मतलब है GreenDiameter/2, जिस स्थिति में हां, चूंकि स्कोर 8 पर छाया हुआ है और हमेशा 2 पुट हैं।
केली लोल्डर

चिंता न करें, मैंने उस प्रश्न को शब्द दिया है कि मेरा यह मतलब कैसे था?; मेरी तकनीक जो इस पर निर्भर करती है, वह मेरे वर्तमान उत्तर के रूप में कहीं भी कम नहीं लगती है, लेकिन मुझे कभी भी ऐसा नहीं लगता है ...
ETHproductions

जवाबों:


10

जावास्क्रिप्ट (ईएस 7), 128 126 बाइट्स

(m,a,D,S,t=0)=>S.map((s,i)=>t+=(r=(f=d=>d>s/2?1+f((l=d<m?d:m,l*l+d*d-2*d*l*Math.cos(a*Math.PI/180))**.5,s):2)(D[i]))<8?r:8)&&t

इसे ऑनलाइन आज़माएं!

व्याख्या

क्योंकि केवल गेंद से छेद की दूरी मायने रखती है और गेंद के निर्देशांक नहीं, हम एक एल्गोरिथ्म लिख सकते हैं जो गणना करता है कि प्रत्येक शॉट के साथ गेंद छेद के कितने करीब पहुंचती है, फिर गेंद को हरे रंग तक पहुंचने तक बार-बार चलाएं। लेकिन हम यह कैसे करते हैं?

एमएस पेंट संशोधनों के साथ बॉल मूवमेंट की व्याख्या करने वाले ओपी के सहायक आरेख का फिर से उपयोग करना:

गोल्फ का विज्ञान

हमारे पास इन नंबरों की पहुंच है:

  • डी , गेंद से छेद तक की वर्तमान दूरी;
  • ice , टुकड़ा कोण; तथा
  • एल , शॉट की लंबाई ( डी की न्यूनतम और अधिकतम शॉट की लंबाई)।

और लक्ष्य एक्स को खोजने के लिए है, शॉट लेने के बाद गेंद से छेद तक की दूरी।

पहले हम ध्यान दें कि एक और बस कर रहे हैं एल क्योंकि θ और एल पाप θ क्रमश। हम देख सकते हैं कि पाइथागोरस प्रमेय द्वारा, x को sqrt (b 2 + (da) 2 ) के रूप में दर्शाया जा सकता है । इसका विस्तार करते हुए, हम प्राप्त करते हैं

x = sqrt(b^2 + (d - a)^2)
  = sqrt((l*sin(θ))^2 + (d - l*cos(θ))^2)
  = sqrt((l^2 * sin^2(θ)) + (d^2 - 2*d*l*cos(θ) + l^2 * cos^2(θ))
  = sqrt(l^2 * sin^2(θ) + l^2 * cos^2(θ) + d^2 - 2dl*cos(θ))
  = sqrt(l^2 * (sin^2(θ) + cos^2(θ)) + d^2 - 2dl*cos(θ))
  = sqrt(l^2 * 1 + d^2 - 2dl*cos(θ))
  = sqrt(l^2 + d^2 - 2dl*cos(θ))

और इसलिए, गेंद से छेद तक की नई दूरी sqrt (l 2 + d 2 - 2dl cos distance) होगी । फिर हम इस छेद के लिए अंतिम स्कोर प्राप्त करने के लिए हरे रंग की त्रिज्या के भीतर इस दूरी को प्राप्त करने के लिए, 2, और 8 पर टोपी को जोड़ने के लिए पुनरावृत्तियों की गणना करते हैं।

(यह बताने के लिए @ LegionMammal978 का धन्यवाद कि मैंने जो भी गणनाएँ कीं, वे सभी ब्रह्मांडों के कानून का सीधा परिणाम हैं ...)


दिलचस्प रूप से पर्याप्त है, जब गेंद अपने अधिकतम शॉट की तुलना में छेद के करीब है, l = d और हम सूत्र को थोड़ा सरल कर सकते हैं:

x = sqrt(l^2 + d^2 - 2dl*cos(θ))
  = sqrt(d^2 + d^2 - 2d^2*cos(θ))
  = sqrt(2d^2 - 2d^2*cos(θ))
  = sqrt(d^2(2 - 2cos(θ)))
  = d * sqrt(2 - 2cos(θ))

शेष पुनरावृत्तियों का # पता लगाने के लिए, हम बस d / r (जहाँ r = हरे रंग की त्रिज्या) को खोज सकते हैं और विभाजित कर सकते हैं कि sqrt (2 - 2cos ())) के द्वारा , फिर परिणाम की छत लें और 2 जोड़ें दुर्भाग्य से, यह केवल डी और अधिकतम शॉट लंबाई के छोटे को खोजने के रूप में छोटा नहीं लगता है ।


यह काफी ठोस दिखता है। क्या आपके पास मौका होने पर TIO लिंक पोस्ट कर सकते हैं?
केली लोडर

1
@ केलीलार्ड ज़रूर, किया।
ETHproductions

2
क्या आपका अंतिम समीकरण कोज़ीन के नियम का प्रत्यक्ष परिणाम नहीं होगा?
लीजनमोनमल 978

@ LegionMammal978 मुझे लगता है कि यह होगा ... क्षमा करें, मेरी त्रिकोणमिति थोड़ी
कठोर है

1
@ kamoroso94 यह एक अच्छा विचार हो सकता है। का उपयोग करना .017453345 डिग्री के कोसाइन पर सिर्फ 2.38e-7 की त्रुटि देता है, इसलिए यह काम करने के लिए पर्याप्त नगण्य हो सकता है। वास्तव में अब जब मैं इसे देखता हूं, 71/4068(= 355/113 / 180) और भी बेहतर है, सिर्फ 4.135e-10 की एक त्रुटि दे रहा है ...
ETHproductions

3

पर्ल 5 , 144 138 + 12 ( -MMath::Trig) = 150 बाइट्स

सूत्र के सरलीकरण का उपयोग करके कुछ बाइट्स मुंडाया

sub p{$_=pi/180*pop;$m=pop;for$b(@_[0..17]){$s=!++$c;1while++$s<6&&$_[17+$c]/2<($b=sqrt$b*$b+($h=$m<$b?$m:$b)**2-2*$h*$b*cos);$t+=$s+2}$t}

इसे ऑनलाइन आज़माएं!

इनपुट प्रारूप को थोड़ा बदला:

Hole 1 distance
Hole 2 distance
...
Hole 18 distance
Hole 1 green diameter
...
Hole 18 green diameter
Maximum distance
Slice angle

2

जूलिया 0.6 , 106 बाइट्स

S(m,t,D,G)=(s(m,d,g,v=2)=d<=g/2?v<8?v:8:(l=d<m?d:m;s(l,(d^2+l^2-2d*l*cosd(t))^.5,g,v+1));sum(s.([m],D,G)))

इसे ऑनलाइन आज़माएं!

ETHproductions के उत्तर के आधार पर ।

व्याख्या

  • s(m,d,g,v=2)=...फ़ंक्शन को परिभाषित करें sजो एक छेद के लिए स्कोर की गणना करता है।
  • sum(s.([m],D,G))sप्रत्येक छेद के लिए आवेदन करें और परिणाम का योग करें। .तत्व-वार फ़ंक्शन अनुप्रयोग सिंगलटन विस्तार के साथ है। उदाहरण के लिए:min.([1],[2,3]) = [min(1,2), min(1,3)]
d<=g/2?v<8?v:8:(l=d<m?d:m;s(...)) #
d<=g/2?       :                   # is the ball on the green?
       v<8?v:8                    # yes -> return min(v,8)
               (l=d<m?d:m;s(...)) # no  ->
                                  # calculate new distance using ETHproductions' formula
                                  # increment current score
                                  # call s recursively
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.