in reply to Efficiency & Maintenance: if/elsif or Other Dispatch Method
You can do this much more efficiently, O(1), by using a lookup table.
my @lookup = ( '00', map { ( $_->[2] ) x ( $_->[ 1 ] - $_->[ 0 ] ) } [ 0, 3, '00' ], [ 3, 7, '05' ], [ 7, 15, '10' ], [ 15, 25, '20' ], [ 25, 35, '30' ], [ 35, 45, '40' ], [ 45, 55, '50' ], [ 55, 65, '60' ], [ 65, 75, '70' ], [ 75, 85, '80' ], [ 85, 93, '90' ], [ 93, 97, '95' ], [ 97, 100, '99' ] ); print "@lookup"; $rv .= $lookup[ ((( $prob - 0.5 )*2 )+( $conf * 100 )) ];
|
|---|