とあるリスト(配列)から最大値を取得するにはどうすれば良いだろうか? いろいろな方法が考えられるが、ここでは三種類ほどサンプルをしめす。各関数の処理をそれぞれ見ていただきたい。
サンプル
;#
;#最大値を抽出する
;#
use strict;
use List::Util qw(max);
#-----------------------------#
# 初期値の設定 #
#-----------------------------#
my @array = (3,4,6,8,1,2,5,7); #8が最大値
#-----------------------------#
# 最大値の取り出し #
#-----------------------------#
print max1( @array ), "\n";
print max2( @array ), "\n";
print max3( @array ), "\n";
#------------------------------------------------
#■最大値を抽出する (その1)
#------------------------------------------------
sub max1 {
my $max = shift; #最初の値を入れる
#-- 渡された配列をすべてなめる --#
foreach(@_){
$max = $_ if( $max < $_ ); #現在よりも大きい値なら
#入れ替える
}
return( $max );
}
#------------------------------------------------
#■最大値を抽出する (その2)
#------------------------------------------------
sub max2 {
#-- 降順にソートし、一番最初の値を取り出す --#
return(
(sort {$b <=> $a} @_)[0]
);
}
#------------------------------------------------
#■最大値を抽出する (その3)
#------------------------------------------------
sub max3 {
#-- モジュールを利用(Perl5.8以降) --#
return(
List::Util::max(@_)
);
}
このブログを応援する
お寄せいただいたお気持ちは全額サーバ代や次の記事を執筆するための原資として活用させていただいております。この記事が参考になった場合などぜひご検討ください。