Bob Showalter wrote:
> Mike Blezien wrote:
>> Hello,
>>
>> is it possible, with perl, to find the closest numerical value to a
>> set value. IE. a set value of 15 and I have five values,
>> 208,258,56,123
>>
>> is there a function too go through the five values array to find the
>> closest to 15 ??
>
> Here's an approach that doesn't use sorting:
>
> #!/usr/bin/perl
>
> print "closest=", closest(15, 208, 258, 56, 123), "\n";
>
> sub closest {
> my $find = shift;
> my $closest = shift;
> abs($_ - $find) < abs($closest - $find) and $closest = $_ for
> @_; $closest;
> }
And in a more readable fashion:
sub closest
{
my $find = shift;
my $closest = shift;
for my $num (@_)
{
if (abs($num - $find) < abs($closest - $find))
{
$closest = $num;
}
}
return $closest;
}
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>