コードゴルフ模擬ゴルフ
穴のヤード、グリーンサイズ、スライス角度、最大距離のリストが与えられたら、ゴルフスコアを計算します。 仮定 地球は平らです すべてのグリーンは円形です スライス角度は-45〜45度で、度単位で指定されます 同じメトリック内のすべての距離(ヤードまたはメートル、重要ではありません) アウトオブバウンズ、障害物、ドッグレッグはありません 穴の最大スコアは8 すべてのショットは、最大距離またはホールまでの距離のうち、ホールへの角度とスライス角度で定義される方向の小さい方を移動します。 距離は、始点と終点の間の直線またはユークリッド距離として測定されます。 最大距離とスライス角度は、すべての穴のすべてのショットで同じです ゴルファーは常にグリーンで2パット(またはグリーンの端)を常に1回パットします。 例 ホール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}} この時点で、2つのパットが必要なため、彼のスコアは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) …