0
0

More than 1 year has passed since last update.

配列に格納された数値の合計値を算出するプログラムの実装

Posted at

配列に格納された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 という式で答えが出力されます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0