Erstellen wir eine Methode, die die Summe von drei beliebigen Zahlen ausgibt. Wenn jedoch die gleiche Nummer enthalten ist Es zählt nicht zur Gesamtsumme.
lone_sum([1, 2, 3]) → 6 lone_sum([3, 2, 3]) → 2 lone_sum([3, 3, 3]) → 0
Die Frage war diesmal eine schwierige und völlig fehlgeleitete Antwort! Ich war mir nicht sicher, ob sich die Argumente in einem Array befanden. Wenn die Anordnung jedoch als Tendenz erscheint, fühlt sich jeder Satz wie eine Eisenplatte an.
Unten ist die Antwort.
def lone_sum(ary)
#Extrahieren Sie nur eindeutige Elemente aus dem Array
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_Gesamt in nums Array
sum = 0
uniq_nums.each do |unique_num|
sum += unique_num
end
puts sum
end
Erwägen Sie beispielsweise, eine Methode mit lone_sum ([3, 2, 3]) aufzurufen. ① ary = [3,2,3] ②ary.each do |num|Nehmen Sie dann den Inhalt des Arrays nacheinander heraus. ③ Die erste herausgenommene Zahl ist 3, also num = 3. ④ Die Sekunde jedes Satzes.each do |i|Dann ich= 3,2,Es wird 3. ⑤ Wenn der bedingte Ausdruck, wenn num (3 herausgenommen wird) == i ist, dh wenn sie dupliziert werden, erhöht sich die Anzahl. (6) Fügen Sie dem Array uniq_nums nur dann einen Wert hinzu, wenn sich in der 11. Zeile ein doppelter Wert befindet. Wenn num = 3, count = 2, wird dem Array uniq_nums kein Wert hinzugefügt. ⑦ Wenn Sie dies noch zweimal wiederholen, werden dem Array uniq_nums nur 2 hinzugefügt. ⑧ Die Summe im Array uniq_nums wird mit sum = 0 oder weniger geschrieben. ⑨ In diesem Fall ist sum = sum + 2, dh sum = 0 + 2. Schließlich wird die Summe als 2 ausgegeben.
Ich verstehe, aber wie lange wird es dauern, bis ein Niveau erreicht ist, in dem dies in Zukunft gelöst werden kann? Wenn jemand weiß, welche Art von Lernmethode verwendet werden kann, um der richtigen Antwort näher zu kommen, lassen Sie es mich bitte wissen. Im Moment kann ich nur lernen.
Recommended Posts