2016-03-27 4 views
0

私はfreecodecampでゴルフコードチャレンジを解決しようとしています。私のコードで何が間違っているのか分かりません。 ここは直接linkです。リンクには、実行しようとしているコードが含まれています。リンクをクリックしてください。freecodecampゴルフコード

マイJS:

function golfScore(par, strokes) { 
    if(strokes == 1) return "Hole-in-one!"; 
    else if(strokes <= par -2) return "Eagle"; 
    else if(strokes === par -1) return "Birdie"; 
    else if(strokes === par) return "Par"; 
    else if(strokes === par + 1) return "Bogey"; 
    else if(strokes === par + 2) return "Double Bogey"; 
    else if(strokes >= par + 3) return "Go Home"; 

return "Change Me"; 
} 
golfScore(5, 4); 

要件:ゴルフのゲームで

各ホールのゴルファーが沈むために作ることが予想されるストロークの平均数を意味パーを持っていますプレーを完了するために穴のボール。あなたのストロークのパーの上または下のパーセンテージに応じて、別のニックネームがあります。

あなたの関数はparとstrokeの引数を渡されます。ストロークを優先度の順に並べた、この表に従って正しい文字列を返します。上から下(最高)(最低):

ストロークが戻る:

1     "Hole-in-one!" 
<= par - 2   "Eagle" 
par - 1   "Birdie" 
par    "Par" 
par + 1   "Bogey" 
par + 2   "Double Bogey" 
>= par + 3   "Go Home!" 

感謝の助けを事前に。

答えて

2

あなたはかなりあります。あなたの解決策が受け入れられない唯一の理由は、Go Home!の代わりにGo Homeを返すためです(最後に感嘆符が表示されます)。

0

私は解決策がこのようにクリーンであると感じます。少ない精神的リソースを使用します。あなたはコールを書く前にargsを反転させる必要はありません。このようANで「パー」のインデックスに - 私は、彼らが一発でそれを作ったか、彼らは額面以上の2回の以上のショットでない限り(パーストローク)を追加、...のif-else文を入れ子に嫌い

function golfScore(par, strokes) { 

    // Only change code below this line 
    if (1 == strokes) return "Hole-in-one!"; 
    else if (par -2 >= strokes) return "Eagle"; 
    else if (par -1 === strokes) return "Birdie"; 
    else if (par === strokes) return "Par"; 
    else if (par + 1 === strokes) return "Bogey"; 
    else if (par + 2 === strokes) return "Double Bogey"; 
    else if (par + 3 <= strokes) return "Go Home!"; 
    // Only change code above this line 

} 

// Change these values to test 
golfScore(4, 1); 
0

配列は該当するスコアを返します。

ie。 Par 4、3で作られた配列でPar = 3、そして3 - 1 = 2でBirdieです。

私はこれがあれば、他にのみ与えられた期待パーで動作するようだが、機能が動作する必要が

function golfScore(par, strokes) { 
    var arr = ["Eagle", "Eagle", "Birdie", "Par", "Bogey", "Double Bogey"]; 

    switch(true) { 
    case (strokes == 1): return "Hole-in-one!"; 
    case (strokes - par > 2): return "Go Home!"; 
    default: return arr[arr.indexOf("Par") + (strokes - par)]; 
    } 
} 

// Change these values to test 
golfScore(4, 7); 
+0

...ネストされたコースはのために要求しますが、私は本当に嫌いよりも複雑である知っていますpar *パラメータ*を指定します。 –

+0

申し訳ありませんが、私は関数全体を含めるべきでした。わかりやすくするために更新されました。実際にはパラメータからparを受け取ることに基づいて動作します。 –

+0

@NathanTuggyオリジナルの質問のリンクから自由にテストしてください。 –