Beefy Boxes and Bandwidth Generously Provided by pair Networks
good chemistry is complicated,
and a little bit messy -LW
 
PerlMonks  

YYAL10CI

by gryng (Hermit)
on Mar 12, 2001 at 22:09 UTC ( [id://63872]=note: print w/replies, xml ) Need Help??


in reply to YAL10CI (Yet Another LUHN-10 Checksum Implementation)

When in doubt add another table:

my @luhnmap_1 = (0,2,4,6,8,1,3,5,7,9); my @luhnmap_2 = (); for my $x (0..9) { for my $y (0..9) { @luhnmap_2[$y*10+$x]=$luhnmap_1[$y]+$x; } } sub LUHN10 { my $num = shift; my $sum = 0; while ($str = substr $num, -2, 2, "") { $sum+=$bigmap[$str]; } return $sum % 10 ? 0 : 1; }

As bonus, if you don't count the additional table code (aw, come on, please :) ), it's shorter! You can increase this speed some more if you want, but the only way to get a huge increase is to create a bigger table (instead of 10 or 100 elements, try 10,000!). Not sure if it's worth going the next step (the memory and upfront cost).

Enjoy,
Gryn

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://63872]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others pondering the Monastery: (4)
As of 2024-04-23 22:47 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found