Ruby 配列の最大値と最小値を求める
Rubyで、maxとminを使用して、配列の最大値と最小値を求めるサンプルコードを記述してます。rubyのバージョンは2.7.2を使用してます。
環境
- OS windows10 pro 64bit
- ruby 2.7.2p137
maxとmin使い方
maxとminを使用すれば、配列の最大値と最小値を求めることが可能です。
配列.max
配列.min
以下は、配列の最大値と最小値を求めるサンプルコードとなります。
arr = [7, 2, 5, 1, 10]
p arr.max
# 10
p arr.min
# 1
arr = [7.7, 2.2, 5.5, 1.1, 10.1]
p arr.max
# 10.1
p arr.min
# 1.1
arr = [-7.7, -2.2, -5.5, -1.1, -10.1]
p arr.max
# -1.1
p arr.min
# -10.1
文字列にも使用することが可能です。
arr = ["e", "c", "a", "d", "b"]
p arr.max
# "e"
p arr.min
# "a"
arr = ["aaa", "aab", "aac"]
p arr.max
# "aac"
p arr.min
# "aaa"
大文字と小文字では、小文字の方が大きいとされます。
arr = ["A", "B", "a", "b"]
p arr.max
# "b"
p arr.min
# "A"
また、異なる型が配列に含まれているとエラーとなります。
arr = [1, "A", "a"]
p arr.max
# in `max': comparison of String with 1 failed (ArgumentError)
arr = [nil, "A", "a"]
p arr.max
# in `max': comparison of String with nil failed (ArgumentError)
文字列と数値であれば一度、ブロックで数値に変換して「<=>」演算子を使用すれば比較することができます。
arr = [2 , "1", 3]
p arr.max {|x,y| x.to_i <=> y.to_i }
# 3
p arr.min {|x,y| x.to_i <=> y.to_i }
# "1"
上記は、条件付きで最大値、最小値を取得できるmax_by,min_byも使用することもできます。
パフォーマンスはmaxの方がいいです。
arr = [2 , "1", 3]
p arr.max_by {|x| x.to_i }
# 3
p arr.min_by {|x| x.to_i }
# 3
【参考】1000万回 max_byとmaxを実行したパフォーマンス結果
user system total real
#max_by 5.516000 0.000000 5.516000 ( 5.584260)
#max 3.796000 0.000000 3.796000 ( 3.811420)
またminmaxを使用すれば、最大値と最小値を同時に比較することが可能です。
arr = [7, 2, 5, 1, 10]
p arr.minmax
# [1, 10]
-
前の記事
python 集合(set)に値を追加する 2020.12.06
-
次の記事
php8.0 get_debug_typeを使って変数の型を取得する 2020.12.07
コメントを書く