125 lines
5.5 KiB
Markdown
125 lines
5.5 KiB
Markdown
|
---
|
|||
|
title: Golf Code
|
|||
|
localeTitle: Código de Golfe
|
|||
|
---
|
|||
|
![:triangular_flag_on_post:](https://forum.freecodecamp.com/images/emoji/emoji_one/triangular_flag_on_post.png?v=3 "triangular_flag_on_post:") Lembre-se de usar **`Read-Search-Ask`** se você ficar preso. Tente emparelhar o programa ![:busts_in_silhouette:](https://forum.freecodecamp.com/images/emoji/emoji_one/busts_in_silhouette.png?v=3 ": busts_in_silhouette:") e escreva seu próprio código ![:pencil:](https://forum.freecodecamp.com/images/emoji/emoji_one/pencil.png?v=3 ":lápis:")
|
|||
|
|
|||
|
### ![:checkered_flag:](https://forum.freecodecamp.com/images/emoji/emoji_one/checkered_flag.png?v=3 ": checkered_flag:") Explicação do Problema:
|
|||
|
|
|||
|
No jogo de golfe, cada buraco tem um **par que** significa o número médio de **golpes que** um golfista deve fazer para afundar a bola em um buraco para completar a jogada. Dependendo de quão longe acima ou abaixo do **par** seus **traços** são, há um apelido diferente.
|
|||
|
|
|||
|
Sua função receberá argumentos **par** e **strokes** . Você deve retornar a string correta de acordo com essa tabela, que lista os traços em ordem de prioridade; topo (maior) para baixo (menor):
|
|||
|
|
|||
|
Strokes | Retorna
|
|||
|
: --------- | : -------------
|
|||
|
1 | "Buraco-em-um!"
|
|||
|
<= par - 2 | "Águia"
|
|||
|
par - 1 | "Passarinho"
|
|||
|
par | "Par"
|
|||
|
par + 1 | "Bogey"
|
|||
|
par + 2 | "Bogey Duplo" > par + 3 | "Ir para casa!"
|
|||
|
|
|||
|
**par** e **traços** serão sempre numéricos e positivos.
|
|||
|
|
|||
|
* Altere o código abaixo `// Only change code below this line` e acima `// Only change code above this line` .
|
|||
|
* Certifique-se de que você está editando o interior da função `golfScore` .
|
|||
|
* Você terá que fazer com que a função retorne exatamente a mesma string mostrada na tabela, dependendo do valor dos parâmetros **par** e **traços** que são passados para sua função.
|
|||
|
|
|||
|
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": speech_balloon:") Sugestão: 1
|
|||
|
|
|||
|
`+number -number` pode ser usado para aumentar ou diminuir um parâmetro em sua condição.
|
|||
|
|
|||
|
> _tente resolver o problema agora_
|
|||
|
|
|||
|
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": speech_balloon:") Dica: 2
|
|||
|
|
|||
|
Você usa `if / else if` cadeias para retornar diferentes valores em diferentes cenários.
|
|||
|
|
|||
|
> _tente resolver o problema agora_
|
|||
|
|
|||
|
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": speech_balloon:") Dica: 3
|
|||
|
|
|||
|
Controle o fluxo de sua função com base na ordem de prioridade das tabelas - superior (maior) para inferior (menor) para retornar os valores de string correspondentes.
|
|||
|
|
|||
|
> _tente resolver o problema agora_
|
|||
|
|
|||
|
## Alerta de Spoiler!
|
|||
|
|
|||
|
![sinal de aviso](//discourse-user-assets.s3.amazonaws.com/original/2X/2/2d6c412a50797771301e7ceabd554cef4edcd74d.gif)
|
|||
|
|
|||
|
**Solução à frente!**
|
|||
|
|
|||
|
## ![:beginner:](https://forum.freecodecamp.com/images/emoji/emoji_one/beginner.png?v=3 ":principiante:") Solução básica de código:
|
|||
|
```
|
|||
|
function golfScore(par, strokes) {
|
|||
|
// Only change code below this line
|
|||
|
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 {
|
|||
|
return "Go Home!";
|
|||
|
}
|
|||
|
// Only change code above this line
|
|||
|
}
|
|||
|
// Change these values to test
|
|||
|
golfScore(5, 4);
|
|||
|
```
|
|||
|
|
|||
|
### Explicação do código:
|
|||
|
|
|||
|
* Compare os parâmetros **par** e **strokes** para retornar os valores de string apropriados.
|
|||
|
* `if / else if` cadeia for usada para controle de fluxo.
|
|||
|
* String "Vá para casa!" é retornado para todas as condições em que os **traços** são maiores ou iguais a **par + 3** .
|
|||
|
|
|||
|
## Solução alternativa de código:
|
|||
|
|
|||
|
```javascript
|
|||
|
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 {return names[6];}
|
|||
|
// Only change code above this line
|
|||
|
}
|
|||
|
|
|||
|
// Change these values to test
|
|||
|
golfScore(5, 4);
|
|||
|
```
|
|||
|
|
|||
|
· Corra no [repl.it](https://repl.it/@AdrianSkar/Basic-JS-Golf-code)
|
|||
|
|
|||
|
\## Explicação do código Como já temos uma matriz definida nos `names` das variáveis, podemos aproveitá-la e usá-la para nossas instruções de retorno usando índices (por exemplo: `names[0] is the first one` ). Dessa forma, se você precisar alterar um resultado específico, não precisaria procurá-lo dentro da função, seria no início, na sua matriz.
|
|||
|
|
|||
|
### Recursos
|
|||
|
|
|||
|
* [Golfe](https://en.wikipedia.org/wiki/Golf)
|
|||
|
* [Desafio: Encadeamento Se Mais Declarações](http://www.freecodecamp.com/challenges/chaining-if-else-statements)
|
|||
|
* [Desafio: Comparação com o Maior que Igual ao Operador](http://www.freecodecamp.com/challenges/comparison-with-the-greater-than-equal-to-operator)
|
|||
|
* [Desafio: Comparação com o Menos de Igual ao Operador](http://www.freecodecamp.com/challenges/comparison-with-the-less-than-equal-to-operator)
|
|||
|
* ["Array" - _Referência do MDN JavaScript_](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array)
|