Mailing List Archive: 49091 messages
  • Home
  • Script library
  • AltME Archive
  • Mailing list
  • Articles Index
  • Site search
 

[REBOL] Re: Optimizations anyone?

From: gregg:pointillistic at: 6-Feb-2008 14:25

Hi Kai, KP> I just wrote the function below to validate Canadian Social InsuranceKP> numbers (SIN) and it strikes me as, well, rather awkward. Looks like SINs use the Luhn algorithm to calc the check digit. luhn?: func [ card-num [string!] /local cksum flag val ] [ cksum: 0 card-num: trim/all copy card-num flag: even? length? card-num foreach digit card-num [ val: to integer! form digit if flag [ val: val * 2 if val > 9 [val: val - 9] ; - alt - ;val: pick [0 2 4 6 8 1 3 5 7 9] val + 1 ] cksum: cksum + val flag: not flag ] ;print cksum 0 = remainder cksum 10 ] -- Gregg