J'ai une pierre d'achoppement en raison d'un problème de rubis, donc je vais la garder comme un disque.
Ce qui suit est une explication approximative du problème. ・ Deux nombres sont saisis sous forme de chaîne de caractères ("a b") ・ Je veux donner un numéro qui double chaque finale
Mauvaise réponse
num = gets.split.map(&:to_i)
puts num * 2
Divisez la valeur avec la méthode `` split '' et mettez la valeur de chaîne dans le tableau.
Utilisez `map (&: to_i) '' pour convertir les valeurs du tableau en nombres pour créer un tableau. (Concernant
map (&: to_i) '', l'article suivant est très facile à comprendre et je l'ai utilisé comme référence.)
https://a-records.info/ruby-map-ampersand-colon-to_i/
Exécutez * 2 sur les éléments du tableau.
Le résultat est le suivant.
num = gets.split.map(&:to_i) //Entrez 5 10
puts num * 2
Résultat de sortie=> 5 10 5 10
Je n'ai pas compris pourquoi 5 10 était répété deux fois même si je l'ai converti en nombre avec @ map (&: to_i)
.
-La multiplication d'un tableau crée un nouveau tableau qui répète les mêmes éléments. Les éléments ont été répétés parce que nous faisions * 2 sur le tableau lui-même, pas sur chaque élément. (Je pense que c'est le cas si vous l'examinez après l'avoir compris ...)
num = gets.split.map(&:to_i)
num.each {|n| puts n * 2}
Il a été résolu en traitant chaque élément avec «chacun».
Recommended Posts