----- Original Message ----- 
From: "Mike Blezien" <[EMAIL PROTECTED]>
Newsgroups: perl.beginners
To: "Perl List" <[EMAIL PROTECTED]>
Sent: Sunday, May 16, 2004 12:50 PM
Subject: Find closest value


> 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 ??

Hi Mike
Doing a quick search on CPAN didn't turn up anything, (as far as I can
tell),
but the following code will do what you want, I believe, but is not a
function.

Chris

#!/usr/bin/perl
use strict;
use warnings;

my $set = 15;
my @vals = (208,258,56,123);

my ($min_idx) = map{$_->[0]}
                          sort{ $a->[1] <=> $b->[1]}
                          map{[$_, abs($vals[$_]-$set)]} 0..$#vals;

print "index of element closest to $set is $min_idx",
   " with value $vals[$min_idx]\n";

__END__
*** Output ***
index of element closest to 15 is 2 with value 56



-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>


Reply via email to