Trois entiers sont donnés, séparés par des espaces. Sortez la valeur obtenue en multipliant trois entiers.
Par exemple
4 10 5
Dans ce cas 4 x 10 x 5
200
Veuillez sortir.
ruby.rb
numbers = gets.split(' ').map(&:to_i)
a = 1
numbers.each do |number|
a = a * number
end
puts a
numbers = gets.split(' ').map(&:to_i)
・ Appelez l'élément d'entrée avec la méthode get
-Split la chaîne de caractères séparée par des virgules avec la méthode split
・ Extraire les éléments un par un avec la méthode map et les convertir en entiers avec to_i
a = 1
numbers.each do |number|
a = a * number
end
・ Remplacez 1 par a at ʻa = 1` (valeur initiale) ・ Remplacez les éléments de nombres dans la variable numérique et répétez le processus suivant
numbers = gets.split(' ').map(&:to_i).inject(:*)
puts numbers
inject est une méthode qui itère comme chacun et map.
La caractéristique est que les calculs itératifs sont effectués à l'aide de blocs.
Objet Array.inject {|valeur initiale,élément|Traitement des blocs}
Il est décrit comme.
Les éléments du bloc sont ajoutés par le tableau dans l'ordre de répétition, et le calcul est effectué en traitant le bloc.
Vous pouvez écrire l'inject avec plus de style en passant l'opérateur comme symbole à l'inject.
Par exemple
Je veux calculer le contenu total du tableau
Je veux calculer la valeur en multipliant tout
Je veux soustraire dans l'ordre en utilisant le contenu du tableau
Il peut être utilisé dans diverses situations telles que *.
array = 1..6
p array.inject(:+) #Ajouter tous les éléments du tableau
p array.inject(3,:+) #Ajoutez tous les éléments du tableau à la valeur initiale de 3
p array.inject(:*) #Multipliez tous les éléments du tableau
p array.inject(3,:*) #Multipliez tous les éléments du tableau par la valeur initiale de 3
p array.inject(100,:-) #Soustrayez la valeur totale du tableau de 100
[Résultat de l'exécution]
21
24
720
2160
79
La méthode utilisant la méthode inject mentionnée dans le commentaire est plus intelligente et plus facile à calculer! Merci pour votre commentaire.
Recommended Posts