2016-03-27 4 views
0

Ich versuche Golf Code Challenge im freecodecamp zu lösen und ich kann nicht wirklich herausfinden, was mit meinem Code falsch ist hier ist die direkte link. Link enthält den Code, den ich ausführen möchte, besuchen Sie einfach den Link.freecodecamp Golf Code

Mein 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); 

Voraussetzung:

Im Golfspiel jedes Loch ein Par die durchschnittliche Anzahl der Striche ein Golfer bedeutet erwartet wird, machen, um zu sinken der Ball in einem Loch, um das Spiel zu vervollständigen. Je nachdem, wie weit deine Striche über- oder unterschritten sind, gibt es einen anderen Spitznamen.

Ihre Funktion wird Par übergeben und Striche Argumente. Geben Sie die richtige Zeichenfolge gemäß dieser Tabelle zurück, in der die Striche in der Reihenfolge ihrer Priorität aufgeführt sind. oben (höchste) nach unten (niedrigste):

Strokes Rückkehr:

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

Dank für die Hilfe im Voraus.

Antwort

2

Sie sind ziemlich viel da. Der einzige Grund, warum Ihre Lösung nicht angenommen wird, ist, dass Sie Go Home anstelle von Go Home! zurückgeben (beachten Sie das Ausrufezeichen am Ende).

0

Ich fühle die Lösung ist sauberer auf diese Weise. Verwendet weniger geistige Ressourcen. Sie müssen die Argumente nicht invertieren, bevor Sie einen Anruf tätigen.

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

Ich hasse verschachtelte if-else-Anweisungen ... Es sei denn, sie es in einem Schuss gefertigt oder sie sind mehr als zwei Schläge über Par, das Hinzufügen (Hübe - Par) auf den Index von „Par“ in eine solche Array gibt die zutreffende Punktzahl zurück.

dh. Par 4, in 3 gemacht. Par = 3 in der Anordnung und 3 - 1 = 2, die Birdie ist.

Ich weiß, das komplizierter ist, als der Kurs verlangt, aber ich mag nicht, wenn-sonst wirklich verschachtelt ...

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

Dies scheint nur mit einem bestimmten erwarteten Par zu arbeiten, aber die Funktion muss arbeiten mit einem Par * Parameter *. –

+0

Entschuldigung, ich sollte die gesamte Funktion enthalten. Aktualisiert für Klarheit. Es funktioniert tatsächlich basierend auf dem Empfangen von Par aus einem Parameter. –

+0

@NathanTuggy Fühlen Sie sich frei, es unter dem Link in der ursprünglichen Frage zu testen. –

Verwandte Themen