免费代码营高尔夫代码

freecodecamp Golf Code

本文关键字:代码 高尔夫 免费代码      更新时间:2023-09-26

我正试图在freecodecamp中解决Golf Code挑战,但我真的不知道我的代码出了什么问题这是直接链接。链接包含我正在尝试运行的代码,只需访问链接即可。

我的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-and-stroke参数。根据该表返回正确的字符串,该表按优先级列出笔划;从上(最高)到下(最低):

冲程返回:

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

感谢您提前提供帮助。

您几乎做到了。您的解决方案未被接受的唯一原因是您返回的是Go Home而不是Go Home!(请注意末尾的感叹号)。

高尔夫代码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));

对于未来坚持这一点的人来说,OP的代码是合乎逻辑的,只是缺少"quot;在";回家&";。

这提醒我们这类事情有多详细。干杯

我觉得这样的解决方案更干净。使用较少的心理资源。在编写调用之前,您不必反转参数。

var names = ["Hole-in-one!", "Eagle", "Birdie", "Par", "Bogey", "Double Bogey", "Go Home!"]
function golfScore(par, strokes) {
    // Only change code below this line
    if (1 == strokes) return names[0];
    else if (par -2 >= strokes) return names[1];
    else if (par -1 === strokes) return names[2];  
    else if (par === strokes) return names[3];
    else if (par + 1 === strokes) return names[4];
    else if (par + 2 === strokes) return names[5];
    else if (par + 3 <= strokes) return names[6];
    // Only change code above this line
}
    
// Change these values to test
golfScore(4, 1);
const 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
}

我讨厌嵌套的if-else语句。。。除非他们只投了一杆,或者超过标准杆2杆以上,否则在这样的数组中,在"标准杆"的索引中添加(杆数-标准杆)将返回适用的分数。

即。第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);

我的基本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
}
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);

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

  // 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
}

这是我的答案

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
}