Comme les autres langages, Go propose aussi une instruction switch.
Les instructions switch sont une façon plus courte d'écrire de longues instructions if ... else if.
Pour créer un switch, on commence par utiliser le mot-clé switch suivi d'une valeur ou d'une expression.
On déclare ensuite chacune des conditions avec le mot-clé case.
On peut aussi déclarer un cas default, qui s'exécute quand aucune des conditions case précédentes n'a été remplie :
operatingSystem := "windows"
switch operatingSystem {
case "windows":
// do something if the operating system is windows
case "linux":
// do something if the operating system is linux
case "macos":
// do something if the operating system is macos
default:
// do something if the operating system is none of the above
}
Une particularité intéressante des instructions switch, c'est que la valeur qui suit le mot-clé switch peut être omise, et que chaque case peut alors porter une condition booléenne :
age := 21
switch {
case age > 20 && age < 30:
// do something if age is between 20 and 30
case age == 10:
// do something if age is equal to 10
default:
// do something else for every other case
}
Dans cet exercice, on va simuler le premier tour d'une partie de Blackjack.
Tu recevras deux cartes et tu pourras voir la carte visible du croupier. Toutes les cartes sont représentées par une string telle que « ace », « king », « three », « two », etc. Voici la valeur de chaque carte :
| carte | valeur | carte | valeur |
|---|---|---|---|
| ace | 11 | eight | 8 |
| two | 2 | nine | 9 |
| three | 3 | ten | 10 |
| four | 4 | jack | 10 |
| five | 5 | queen | 10 |
| six | 6 | king | 10 |
| seven | 7 | autre | 0 |
Note : couramment, un as peut valoir 1 ou 11, mais pour simplifier, on considérera qu'il ne peut valoir que 11.
Selon tes deux cartes et celle du croupier, il existe une stratégie pour le premier tour de la partie, qui te donne les options suivantes :
Même si elle n'est pas encore optimale, tu vas suivre la stratégie que ton ami Alex a mise au point, qui est la suivante :
Implémente une fonction qui calcule la valeur numérique d'une carte :
value := ParseCard("ace")
fmt.Println(value)
// Output: 11
Écris une fonction qui implémente la logique de décision décrite ci-dessus :
func FirstTurn(card1, card2, dealerCard string) string
Voici quelques exemples de résultats attendus :
FirstTurn("ace", "ace", "jack") == "P"
FirstTurn("ace", "king", "ace") == "S"
FirstTurn("five", "queen", "ace") == "H"
Inscris-toi sur Exercism pour apprendre et maîtriser Go avec 35 concepts167 exercices, et un vrai mentorat humain, le tout gratuitement.