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