0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

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

Posted at

概要

配列に格納された3つの数値の合計を算出するプログラムを実装。次の要件を満たすlone_sumメソッドを実装。

配列に格納された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])

3〜14行目で重複しない値のみ取り出す処理を、17〜20行目で重複しない値のみになった配列内の合計を求める処理を行っています。以下具体的に見てみます。

たとえば、lone_sum([3, 2, 3])でメソッドを呼び出した場合を考えてみます。

この場合、4行目で最初にnum=3となります。その後6行目でi=3, 2, 3となり、それぞれに対してnum=iとなったとき、つまり重複したときにcountが増えるようになっています。
そして、11行目では重複した値が1つのときだけ、uniq_nums配列に値を追加しています。num=3のときはcount=2となるので、uniq_nums配列に値は追加されません。
これを後2回繰り返した結果、uniq_nums配列には2だけが追加されます。

そして17行目以下でuniq_nums配列内の合計を求めます。
この場合はsum = sum + 2、つまりsum = 0 + 2となります。
その結果、合計は2と出力されます。

0
1
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
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?