Created
October 13, 2018 14:35
-
-
Save qsona/a07f6b1bb45976f5ba1ccdea6d0cfbbe to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 22 引数に配列をとって、重複している値を昇順の配列にして返す関数を作れ。 | |
# 例)引数 [1, 3, 2, 3, 8, 3, 2] => 返り値 [2, 3] | |
def q22(array) | |
dup = {} # key: number, value: duplicate count (2以上のときは2) | |
ans = [] | |
array.each do |num| | |
case dup[num] | |
when nil | |
dup[num] = 1 | |
when 1 | |
dup[num] = 2 | |
ans << num | |
end | |
end | |
ans.sort | |
end | |
p q22([1, 3, 2, 3, 8, 3, 2]) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 22 引数に配列をとって、重複している値を昇順の配列にして返す関数を作れ。 | |
# 例)引数 [1, 3, 2, 3, 8, 3, 2] => 返り値 [2, 3] | |
def q22_2(array) | |
dup = {} # key: number, value: Bool (true if the num is duplicated) | |
array.each { |num| dup[num] = !dup[num].nil? } | |
ans = [] | |
dup.each { |num, is_dup| ans << num if is_dup } | |
ans.sort | |
end | |
p q22_2([1, 3, 2, 3, 8, 3, 2]) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# q23. | |
# 引数に配列をとり、重複している要素の値をキー、重複した回数を値にもつハッシュを返す関数を作れ。 | |
# e.g. 引数[1,3,2,3,8,3,2] => 返り値{2=>2,3=>3} | |
def q23(array) | |
hash = {} | |
array.each do |num| | |
hash[num] ||= 0 | |
hash[num] += 1 | |
end | |
hash.select { |k, v| v >= 2 }.to_h | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment