If these results are analysed further, I get NB. rnk gives the relative performance of execution time and space
rnk 5&ts&>'x f0 y'; 'x f1 y'; 'x f2 y' 2 6.79 4.14 1 1.63 1.59 0 1.00 1.00 rnk 5&ts&>'I.x'; '((i.#y) e. +/\0,x)'; '(1 (<:+/\x)} (#y)$0) ' 2 1.60 3.42 1 1.54 2.63 0 1.00 1.00 rnk 5&ts&>'t0=.I.x'; 't1=.((i.#y) e. +/\0,x)'; 't2=.(1 (<:+/\x)} (#y)$0) ' 2 3.50 3.42 1 3.20 2.63 0 1.00 1.00 rnk 5&ts&>'t0</.y'; 't1<;.1 y'; 't2<;.2 y' 2 8.10 4.56 1 1.10 1.00 0 1.00 1.00 Apparently </. is much slower than <;. R.E. Boss -----Oorspronkelijk bericht----- Van: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] Namens Sherlock, Ric Verzonden: woensdag 5 november 2008 7:53 Aan: Programming forum Onderwerp: RE: [Jprogramming] cut on length ---Roger Hui wrote: > f0=: 4 : '(I.x)</.y' > f1=: 4 : '((i.#y) e. +/\0,x) <;.1 y' > > x=: 1+1e4 [EMAIL PROTECTED] 100 > y=: t {~ (+/x) [EMAIL PROTECTED] #t=. 'barack obama' > > x (f0 -: f1) y > 1 > ts=: 6!:2 , 7!:[EMAIL PROTECTED] > > ts 'x f0 y' > 0.0700156 1.09591e7 > ts 'x f1 y' > 0.00778395 4.20992e6 When I saw Brian's solution I wasn't going to post mine - his was so much simpler (BTW I have only used monadic I. to turn a boolean into an index of 1s and hadn't realised what it did with integers). Roger's post prompted me to time mine and the result surprised me. f2=: 4 : '(1 (<:+/\x)} (#y)$0) <;.2 y' x (f1 -: f2) y 1 50 ts 'x f0 y' 0.030942459167 10976256 50 ts 'x f1 y' 0.0077791269561 4227072 50 ts 'x f2 y' 0.0060425808308 2654272 ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
