0
0

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 1 year has passed since last update.

同じ数値が2つ以上含まれている場合、その数値は合計しないプログラム

Posted at

今日も学んだことを忘れない為にメモします。

プログラムの内容

・配列に格納された数値の合計値を算出する
・ただし、同じ数値が2つ以上含まれている場合、その数値は合計する要素に含めない

記述内容

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

  sum = 0
  uniq_nums.each do |unique_num|
    sum += unique_num
  end
  puts sum
end

lone_sum([1, 2, 3])
lone_sum([3, 2, 3])
lone_sum([3, 3, 3])

=> 6
=> 2
=> 0

uniq_nums = [] は重複していない要素を取り出して保管する配列
まずは配列から、重複しない数字のみをeach doで取り出していく。
count = 0    はお馴染みのcountを0からスタートするために記述

lone_sum([3, 2, 3])でメソッドを呼び出した場合で考える

if num == i
  count += 1
end

とりだした数字とが同じかの確認 する(3,2,3) == (3)、
同じであれば、何個同じか数える count += 1

if count < 2
  uniq_nums << num
end

重複した値が1つのときだけ uniq_nums配列に値を追加する
num=3のときはcount=2となるので、uniq_nums配列に値は追加されない

sum = 0
uniq_nums.each do |unique_num|
  sum += unique_num
end

上記で作成したuniq_nums配列の合計を求めるための記述。
sum = sum + 2、つまりsum = 0 + 2となるので「2」が出力される

以上になります。

0
0
1

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?