freecodecamp高尔夫代码

时间:2016-03-27 18:29:41

标签: javascript

我正在尝试解决freecodecamp中的Golf Code挑战,我无法弄清楚我的代码有什么问题 这是直接link。链接包含我尝试运行的代码,只需访问链接。

我的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!"

感谢您提前帮助。

9 个答案:

答案 0 :(得分:2)

你几乎就在那里。您的解决方案未被接受的唯一原因是您返回Go Home而不是Go Home!(请注意结尾处的感叹号)。

答案 1 :(得分:1)

FCC高尔夫球场解决方案:

var names = ["Hole-in-one!", "Eagle", "Birdie", "Par", "Bogey", "Double Bogey", "Go Home!"];
function golfScore(par, strokes) {

  if (strokes == 1) return names[0];
  else if (strokes <= par - 2) return names[1];
  else if (strokes == par - 1) return names[2];
  else if (strokes == par) return names[3];
  else if (strokes == par + 1) return names[4];
  else if (strokes == par + 2) return names[5];
  else if (strokes >= par + 3) return names[6];

  return "Change Me"; // in case: if non-valid input given
}

console.log(golfScore(5, 4));

答案 2 :(得分:1)

对于任何在未来坚持这一点的人来说,OP 的代码是合乎逻辑的,只是缺少“!”的错字。在“回家!”中。

提醒一下这些类型的事情有多详细。干杯

答案 3 :(得分:0)

我觉得这种解决方案更清洁。使用较少的心理资源。在打电话之前你不必反转args。

db

答案 4 :(得分:0)

我讨厌嵌套的if-else语句...除非他们一次性完成它或者超过标准杆2次以上,否则将(笔画 - 标准杆)添加到&#34; Par&#34;在这样的数组中将返回适用的分数。

即。 Par 4,在阵列中Par = 3,而3 - 1 = 2,即Birdie。

我知道这比课程要求的更复杂,但我真的不喜欢嵌套if-else ......

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

答案 5 :(得分:0)

我的基本JavaScript解决方案:高尔夫代码

function golfScore(par, strokes) {
  // Only change code below this line
  if(strokes >= par + 3) {
   return names[6];
  } else if(strokes == par + 2) {
   return names[5];
  } else if(strokes == par + 1) {
   return names[4];
  } else if(strokes == 1) {
   return names[0];
  } else if(strokes == par) {
    return names[3];
  } else if(strokes == par - 1) {
    return names[2];
  } else if(strokes <= par - 2) {
    return names[1];
  }  

  return "Change Me";
  // Only change code above this line
}

答案 6 :(得分:0)

var names = ["Hole-in-one!", "Eagle", "Birdie", "Par", "Bogey", "Double Bogey", "Go Home!"];
function golfScore(par, strokes) {
  // Only change code below this line
  if(strokes === 1){
    return names[0];
  }else if(strokes <= par - 2){
    return names[1];

  }else if(strokes === par - 1){
    return names[2];

  }else if(strokes === par){
    return names[3];

  }else if(strokes === par + 1){
    return names[4];

  }else if(strokes === par + 2){
    return names[5];

  }else if(strokes >= par + 3){
    return names[6];

  }


  // Only change code above this line
}

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

答案 7 :(得分:0)

原始答案很好,但是没有使用提供的名称数组。我成功完成了以下挑战:

  // Only change code below this line

  if(strokes == 1) {
  return names[0];
  }
  if(strokes <= par -2) {
  return names[1];
  }
  if(strokes == par -1) {
  return names[2];
  }
  if(strokes == par) {
  return names[3];
  }
  if(strokes == par +1) {
  return names[4];
  }
  if(strokes == par +2) {
  return names[5];
  }
  if(strokes >= par +3) {
  return names[6];
  }
  return "Change Me";

  // Only change code above this line
}

答案 8 :(得分:0)

<块引用>

这是我的答案

var names = ["Eagle", "Eagle", "Birdie", "Par", "Bogey", "Double Bogey"];
function golfScore(par, strokes) {
// Only change code below this line
  if(strokes == 1) return names[0];
  else if(strokes <= par - 2) return names[1];
  else if(strokes <= par - 1) return names[2];
  else if(strokes == par) return names[3];
  else if(strokes <= par + 1) return names[4];
  else if(strokes <= par + 2) return names[5];
  else {
  return names[6];
  }

  return "Change Me";
// Only change code above this line
}