> > Hi, ALL, > > I thought there should be a solution/algorithm already > to this problem and would like to check here first. > > > The problem: To return all the pairs (one number from each > array, one number can only be in one pair) that have the > smallest sum of absolute differences from two arrays. > > For example > > my @xa=(8765,6000,4765,3000,1530,1500,1465,1234,1000); > my @xb=(8675,6000,4567,3100,3000,1545,1515,1485,1324,1005); >
Why not put them in a hash and loop over the key/value pairs? my %nums = ( 3000 => 3005, 2000 => 4678 ); foreack $k(keys %nums) { if($k > $nums{$k}) { my $diff = $k - $nums{$k}; } else { my $diff = $nums{$k} - $k; } print "Diff : $diff N1 :$k N2 : $nums{$k}"; } > to return: > diff num_1 num_2 > 0 3000 3000 > 0 6000 6000 > 5 1000 1005 > 15 1500 1515 > 15 1530 1545 > 20 1465 1485 > -90 8765 8675 > 90 1234 1324 > -198 4765 4567 > . . 3100 > > Notice that |1500-1485|=|1500-1515|. Is that a problem? > > > Many thanks! > > > Nengbing > > -- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]