Files
ruby-lab/exercises/hand_score.rb
T
2026-10-14 11:08:11 +02:00

62 lines
1.2 KiB
Ruby

# Défi : score d'une main
#
# Écris la méthode `hand_score(cards)`.
#
# Chaque carte est représentée par un hash :
#
# { value: "ace", suit: "hearts" }
#
# Valeurs :
# - 7 à 10 valent leur valeur numérique ;
# - jack vaut 11 ;
# - queen vaut 12 ;
# - king vaut 13 ;
# - ace vaut 14.
#
# La méthode doit retourner la somme des valeurs de toutes les cartes.
#
# Contraintes :
# - ne modifie pas le tableau d'origine ;
# - évite une longue suite de `if` ;
# - essaie de garder la méthode lisible.
cards = [
{ value: "7", suit: "clubs" },
{ value: "king", suit: "hearts" },
{ value: "ace", suit: "spades" },
# { value: "blork", suit: "club"}
]
def hand_score(cards)
score = 0
cards.each do |card|
value = Integer(card[:value], exception: false)
if value
score += value
else
case card[:value]
when "jack"
score += 11
when "queen"
score += 12
when "king"
score += 13
when "ace"
score += 14
else
# raise lève une exception et interrompt l'exécution normale du programme.
raise ArgumentError, "Valeur de carte inconnue : #{card[:value]}"
end
end
end
score
end
# Résultat attendu :
#
# hand_score(cards)
# => 34
puts hand_score(cards)