概要
配列内の重複していない要素を取得し、計算するというプログラムを書きました。
重複しているものがほしいときには比較演算子の記述を変更すれば取得することができます。認識に間違いがありましたらご指摘いただけたら幸いです。
目次
-
実践
- 問題
- 解答
-
参考文献
実践
問題
任意の3つの数値の合計を出力するメソッドを作成してください。ただし、同じ数が含まれている場合はカウントしない。
解答
ハッシュを始めに生成しているのは、要素数を計算し、条件に合うものを select
で取得したいからです。
def uniq_num(ary)
counts = Hash.new(0) # ハッシュを生成
ary.each { |v| counts[v] += 1 } # 重複している要素を検索
i = counts.select { |v, count| count == 1 }.keys # 重複していないものだけ取得
p i.sum # 合計を出力
end
# メソッド呼び出し
uniq_num([1, 2, 3])
uniq_num([3, 2, 3])
uniq_num([3, 3, 3])
# ターミナル出力結果
# 6
# 2
# 0