phpのmax関数を見ていて、perlで実現したらどうなるだろうと考えてみました。そして実装してみた結果がこれです。
@ns = qw(1 23 4 24 1330 540);
$a = shift(@ns);
$n = $#ns;
for($i = 0;$i <= $n;$i++){
if($a == $ns[0] or $a > $ns[0]){
shift(@ns);
}else{
$a = shift(@ns);
}
}
これをサブルーチンにすると、
sub max{
my @ns = @_;
my $n = $#ns;
my $a = shift(@ns);
for(my $i = 0;$i <= $n;$i++){
if($a == $ns[0] or $a > $ns[0]){
shift(@ns);
}else{
$a = shift(@ns);
}
}
return $a;
}
となります。
@nsをsortして取り出せば一発ではと言うのは無しにして下さい