Créons une méthode qui génère la somme de trois nombres quelconques. Cependant, si le même numéro est inclus Cela ne compte pas dans le total.
lone_sum([1, 2, 3]) → 6 lone_sum([3, 2, 3]) → 2 lone_sum([3, 3, 3]) → 0
La question cette fois était une réponse difficile et totalement erronée! Je n'étais pas sûr que les arguments étaient dans un tableau. Cependant, lorsque l'arrangement apparaît comme une tendance, chaque phrase ressemble à une plaque de fer.
Voici la réponse.
def lone_sum(ary)
#Extraire uniquement les éléments uniques du tableau
uniq_nums = []
ary.each do |num|
count = 0
ary.each do |i|
if num == i
count += 1
end
end
if count < 2
uniq_nums << num
end
end
# uniq_Total dans le tableau nums
sum = 0
uniq_nums.each do |unique_num|
sum += unique_num
end
puts sum
end
Par exemple, envisagez d'appeler une méthode avec lone_sum ([3, 2, 3]). ① aire = [3,2,3] ②ary.each do |num|Ensuite, retirez le contenu du tableau un par un. ③ Le premier nombre retiré est 3, donc num = 3. ④ La seconde de chaque phrase, ary.each do |i|Alors je= 3,2,Cela devient 3. ⑤ Lorsque l'expression conditionnelle if num (3 est supprimée) == i, c'est-à-dire lorsqu'elle se chevauche, le nombre augmente. (6) Ajoutez une valeur au tableau uniq_nums uniquement lorsqu'il y a une valeur en double sur la 11e ligne. Lorsque num = 3, count = 2, aucune valeur n'est donc ajoutée au tableau uniq_nums. ⑦ Suite à cette répétition deux fois de plus, seulement 2 sont ajoutés au tableau uniq_nums. ⑧ Le total dans le tableau uniq_nums est écrit avec sum = 0 ou moins. ⑨ Dans ce cas, somme = somme + 2, c'est-à-dire somme = 0 + 2. Enfin, le total est affiché comme 2.
Je comprends, mais combien de temps faudra-t-il pour atteindre un niveau où cela pourra être résolu à l'avenir? Si quelqu'un sait quel type de méthode d'étude peut être utilisé pour se rapprocher de la bonne réponse, faites-le moi savoir. Pour le moment, tout ce que je peux faire, c'est étudier.
Recommended Posts