Dan, Henry, Raul, Roger:

Thanks for the insights | code. As an aside, do these utilities ever find an
organized home in the Library | Wiki (ie, other than as a forum thread)?  

Rgds / ... Chito

> ------------------------------
> 
> Message: 8
> Date: Sat, 2 Aug 2008 13:03:35 -0400
> From: "Dan Bron" <[EMAIL PROTECTED]>
> Subject: RE: [Jprogramming] Check digit utility
> To: "'Programming forum'" <[email protected]>
> Message-ID: <[EMAIL PROTECTED]>
> Content-Type: text/plain;     charset="US-ASCII"
> 
> I wrote:
> 
> > Some experiments show that  x&i.  doesn't do any special 
> > magic when  #x  is large yet  #~.x  is small.  But it could.
> 
> I should have pointed out that Roger's solution is still more than twice as
fast & lean as the other contenders, irrespective of
> whether this optimization is implemented or not.
> 
>          db0        =:  (, 10 | 0 - 1 3 1 7 3 9 +/@:* ])&.(sn i. |:)
>          db1        =:  (, 10 | 1 3 1 7 3 9 +/@:* -)&.(sn i. |:)
>          hr0        =:  (, 10 | 9 7 9 3 7 1 +/@:* ])&.(sn i. |:)              
>   
   NB.  9 7 9 3 7 1 -: 10 - 1 3 1 7 3 9
>          rh0        =:  (,"1 0 (841 $ '0987654321') {~ 1 3 1 7 3 9 +/ .*~ sn 
> i.
])  NB.  841 -: 1 3 1 7 3 9 (1 + [ +/@:*
> (#<:)&:# ) sn
>       
>          contenders =:  db0`db1`hr0`rh0
>          
>          A          =:  sn {~  ? 4e6 6 $ #sn                                  
>   
   NB.  Big array of SEDOLs
>          
>          assert (-: 1&|.) contenders `:0 A                                    
>   
   NB.  Results all match
> 
>          ts         =:  6!:2 , 7!:2@:]
>          scores     =:  3 : 'y (5!:0) 1 : '' 10 ts ''''u  A'''' '' '"0 
> contenders
>          
>          scores /:~ ;:^:_1 contenders ,. '0.2' 8!:0 (%"1<./) scores
>       rh0 1.00 1.00
>       hr0 2.33 1.55
>       db0 2.40 1.55
>       db1 2.68 1.73
> 
> In the results, the numbers are expressed as factors of the best score (so
lower is better, and  1  is best), with the first
> column of numbers being time, and the second space.
> 
> So, Chito, if you're still reading this thread, and speed is your metric,
you should choose Roger's verb.
> 
> (Though, given that the difference in time between the fastest and slowest
expressions is only 0.8 seconds for 4 million SEDOLS,
> you can probably afford to select any of them for any reason that strikes
you.  If you're processing 4 million records,
> calculating the checksum is unlikely to be a bottleneck.)
> 
> -Dan
> 
------- End of Original Message -------

----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to