1
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 3 years have passed since last update.

🔰重複しない要素のみを取り出した計算式

Last updated at Posted at 2021-02-04

今日の問題はこちらでした


任意の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([3, 2, 3])の場合を見てみましょう。
この場合ary.each do |num|の処理で3になります。
その後i=3,2,3となり重複するとcountが増えるようになります。
num=3の時はcount=2となるのでuniq_numsの配列に値は追加されずこれを後に二回繰り返すと、配列には2
だけが追加されます。
そして②でuniq_numsの合計を求めます。この場合は
sum = sum + 2、つまりsum = 0 + 2となります。として合計は2となります。


正直この問題は全くわかりませんでした。
そして比較演算式の知識もまだまだなと実感させられた問題でした。

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