配列に格納された3つの数値の合計を算出するプログラムを実装します。
- 配列に格納された3つの数値の合計を出力する
- ただし、同じ数値が2つ以上含まれている場合、その数値は合計する要素に含めない
def lone_sum(ary)
# 処理を記述
end
# 呼び出し例
lone_sum([1, 2, 3])
出力例
lone_sum([1, 2, 3]) → 6
lone_sum([3, 2, 3]) → 2
lone_sum([3, 3, 3]) → 0
解答例
def lone_sum(ary)
# 配列から、重複しない要素のみ取り出す
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_nums配列内の合計
sum = 0
uniq_nums.each do |unique_num|
sum += unique_num
end
puts sum
end
# 呼び出し例
lone_sum([1, 2, 3])
回答が長いので、分けて見ていきたいと思います。
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
ここでは、「重複しない値のみ取り出す」という処理を行なっています。
ary.each do |num| → aryを変数numにして1, 2, 3を繰り返しています。
ary.each do |i| → aryを変数iにして1, 2, 3を繰り返しています。
それぞれに対してnum = i ...つまり重複したとき、countが増えます。
if count < 2
重複した値が1つのときだけ、uniqu_nums配列に値を追加しています。
sum = 0
uniq_nums.each do |unique_num|
sum += unique_num
end
puts sum
ここでは、「uniq_nums配列内の合計」を求める記述をしています。
sum += unique_num
今回の場合、sum = 1 + 2 + 3 = 6 という式で答えが出力されます。