2016-03-27 8 views
0

Freecodecamp'da Golf Kodu yüklemesini çözmeye çalışıyorum ve kodumda yanlış olanı bulamıyorum. burada doğrudan link. Bağlantı çalıştırmaya çalıştığım kodu içeriyor, sadece bağlantıyı ziyaret et.freecodecamp Golf Kodu

Benim HB:

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

Gereksinim: golf oyununda

her delik bir golfçü batmaya amacıyla sağlaması bekleniyor vuruş ortalama sayısını anlamına gelen bir par vardır Oyunu tamamlamak için bir delik topu. Konturlarınızın ne kadar yukarıda veya altında olduğuna bağlı olarak, farklı bir takma ad vardır.

İşleviniz par ve kontur argümanlarından geçirilecektir. Konturları öncelik sırasına göre listeleyen bu tabloya göre doğru dizgiyi döndürün; alta üst (en yüksek) (en düşük):

İnme Dönüş:

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

Teşekkür yardım için şimdiden.

cevap

2

Oldukça fazla varsın. Çözümünüzün kabul edilmemesinin tek nedeni, Go Home! yerine Go Home döndüğünüzdür (sonunda ünlem işareti not edilmelidir).

0

Çözümün bu şekilde daha temiz olduğunu hissediyorum. Daha az zihinsel kaynak kullanır. Bir çağrı yazmadan önce yayınları ters çevirmenize gerek yok. Tek fotoğrafa yaptım sürece

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

ben ... İç içe if-else ifadeleri nefret ya da (vuruş - par) ekleyerek par üzerinde 2'den fazla çekim vardır böyle bir in "Par" endeksine dizi geçerli puanı döndürecektir.

ie. Par 4, 3'te yapılmıştır. Dizide Par = 3 ve Birdie olan 3 - 1 = 2.

Bu kurs sorar daha karmaşık olduğunu biliyorum ama if-else Gerçekten iç içe sevmediğim ...

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

Bu sadece belirli bir beklenen eşit çalışmak gibi görünüyor, ama işlevi çalışması gereken par * parametresiyle *. –

+0

Özür dilerim, tüm işlevi dahil etmeliydim. Açıklık için güncellendi. Aslında, bir parametreden para almaya dayalı olarak çalışır. –

+0

@NathanTuggy Orijinal sorudaki bağlantıda test etmekte çekinmeyin. –