p {~ q i. ] Improved |
initial writing: 2006-11-07 last updated: 2007-11-29 |
The monad p {~ q i. ] where p and q
are lists of 1-byte characters performs character mappings. For example:
'AA aa'=: a.{~ 65 97 +/ i.26 AA ABCDEFGHIJKLMNOPQRSTUVWXYZ aa abcdefghijklmnopqrstuvwxyz lc=: (aa,a.) {~ (AA,a.) i. ] lc 'United States of America, Union of South Africa' united states of america, union of south africa
The phrase and its variants ( (q i.]){p"_
and q&i.{p"_ )
are now supported by special code and are faster and leaner.
The following benchmarks demonstrate the improvement:
x=: a. {~ 1e6 ?@$ 256 p=: a. {~ 123 (22 b.) i.256 ts=: 6!:2, 7!:2@] NB. time and space ts 'Expression'
Expression | J 6.02 | J 6.01 | Ratio | |||||||||
lc x | 0.004747 | 1.04934e6 | 0.018244 | 9.43795e6 | 3.84 | 8.99 | ||||||
(p{~a.i.]) x | 0.001450 | 1.04979e6 | 0.018401 | 9.43840e6 | 12.69 | 8.99 |