50 lines
1.0 KiB
Ruby
50 lines
1.0 KiB
Ruby
# Défi : regrouper des repas
|
|
#
|
|
# Écris la méthode `meal_totals(meals)`.
|
|
#
|
|
# Chaque repas contient un aliment et une quantité :
|
|
#
|
|
# { food: "dubia", quantity: 2 }
|
|
#
|
|
# La méthode doit retourner un hash contenant la quantité totale
|
|
# consommée pour chaque aliment.
|
|
#
|
|
# Exemple :
|
|
#
|
|
# meals = [
|
|
# { food: "dubia", quantity: 2 },
|
|
# { food: "mealworm", quantity: 3 },
|
|
# { food: "dubia", quantity: 1 }
|
|
# ]
|
|
#
|
|
# meal_totals(meals)
|
|
# => {
|
|
# "dubia" => 3,
|
|
# "mealworm" => 3
|
|
# }
|
|
#
|
|
# Contraintes :
|
|
# - ne modifie pas le tableau d'origine ;
|
|
# - le résultat doit fonctionner quel que soit le nom des aliments ;
|
|
# - évite d'écrire une condition spécifique pour chaque aliment.
|
|
|
|
meals = [
|
|
{ food: "dubia", quantity: 2 },
|
|
{ food: "mealworm", quantity: 3 },
|
|
{ food: "dubia", quantity: 1 },
|
|
{ food: "red_runner", quantity: 2 }
|
|
]
|
|
|
|
def meal_totals(meals)
|
|
total = {}
|
|
meals.each do |meal|
|
|
unless total.key?(meal[:food])
|
|
total[(meal[:food])] = 0
|
|
end
|
|
total[(meal[:food])] += meal[:quantity]
|
|
end
|
|
total
|
|
end
|
|
|
|
puts meal_totals(meals)
|