Here is another
copy4=: (* {:@$) $"1 ]
+--+------------------+---------------------+
| |A |B |
+--+------------------+---------------------+
|0 | 0.00101577 526144| 0.00291462 1.05043e6|
|1 | 0.00053694 525632| 0.00103952 787776|
|2 |0.000362057 523520| 0.00171139 1.04192e6|
|2a| 0.00118339 528384| 0.00272772 1.05267e6|
|3 | 0.00150857 526720| 0.00523586 1.05101e6|
|3a|0.000719645 526144| 0.00256317 1.05043e6|
|4 | 6.95619e_5 263552|0.000824127 525696|
+--+------------------+---------------------+
copy0=: 13 : ',./ > x $< y'
copy1=: ([ (* $ [EMAIL PROTECTED]) {:@[EMAIL PROTECTED]) {"1 ]
copy2=: 4 : '> ,.&.>/ ,.~&.>^:(I.|.#:x) <y'
copy2a=: 4 : '(x*{:$y) {."1 ,.~^:(>.2^.1>.x) y'
copy3=: ,/@(#,:)&.|:
copy3a=: [:,./ (#,:)
copy4=: (* {:@$) $"1 ]
seriesA=: 10 10 $'abcd'
seriesB=: 20 10 $'abcd'
2000 (copy0 -: copy4) seriesA
1
--- "R.E. Boss" <[EMAIL PROTECTED]> wrote:
> Some alternatives:
>
> copy3=: ,/@(#,:)&.|:
> copy3a=: [:,./ (#,:)
>
> 20000 (copy2a-:copy3a) b
> 1
> 20000 (copy2a-:copy3) b
> 1
>
> ts '20000 copy2a b'
> 0.00030425237 396992
> ts '20000 copy3 b'
> 0.00071625735 264064 NB. slower by a factor 2
> ts'20000 copy3a b'
> 0.00035746269 263680
>
> R.E. BOSS
>
>
> -----Oorspronkelijk bericht-----
> Van: [EMAIL PROTECTED]
> [mailto:[EMAIL PROTECTED] Namens Roger Hui
> Verzonden: zaterdag 18 maart 2006 18:33
> Aan: Programming forum
> Onderwerp: Re: [Jprogramming] Different(and maybe more elegant) ways of
> copying?
>
> Variation on the copy2 theme: overshoot and then crop.
>
> copy2a=: 4 : '(x*{:$y) {."1 ,.~^:(>.2^.1>.x) y'
> 2000 (copy -: copy2a) b
> 1
> ts '2000 copy2a b'
> 0.000196394 28352
>
>
>
> ----- Original Message -----
> From: "Roger Hui" <[EMAIL PROTECTED]>
> To: "Programming forum" <[email protected]>
> Sent: Saturday, March 18, 2006 8:59 AM
> Subject: Re: [Jprogramming] Different(and maybe more elegant) ways of
> copying?
>
> Yet another alternative is powers of the monad ,.~ .
> If x is a power of 2 then the method is really short and fast.
> If x is not a power of 2 then more code is required.
>
> (1024 copy b)-: ,.~^:10 b
> 1
>
> ts=: 6!:2 , 7!:[EMAIL PROTECTED]
> ts '1024 copy b'
> 0.000481905 17920
> ts ',.~^:10 b'
> 8.63238e_5 13248
>
> copy2=: 4 : '> ,.&.>/ ,.~&.>^:(I.|.#:x) <y'
>
> 2000 (copy -: copy1) b
> 1
> 2000 (copy -: copy2) b
> 1
>
> ts '2000 copy b'
> 0.000918273 25664
> ts '2000 copy1 b'
> 0.000234387 41984
> ts '2000 copy2 b'
> 0.000215949 29056
>
>
>
> ----- Original Message -----
> From: "Roger Hui" <[EMAIL PROTECTED]>
> To: "Programming forum" <[email protected]>
> Sent: Saturday, March 18, 2006 8:47 AM
> Subject: Re: [Jprogramming] Different(and maybe more elegant) ways of
> copying?
>
> An alternative is to use indexing:
>
> copy1=: ([ (* $ [EMAIL PROTECTED]) {:@[EMAIL PROTECTED]) {"1 ]
> 1000 (copy -: copy1) b
> 1
>
>
>
> ----- Original Message -----
> From: "June Kim" <[EMAIL PROTECTED]>
> To: "Programming forum" <[email protected]>
> Sent: Saturday, March 18, 2006 8:32 AM
> Subject: [Jprogramming] Different(and maybe more elegant) ways of copying?
>
> b=. 2 2 $'abcd'
> copy=.13 : ',./ > x $< y ' NB. copies the box side by side
> 3 copy b
> ababab
> cdcdcd
> 4 copy b
> abababab
> cdcdcdcd
>
> Maybe, I could use under(as in 13 : ',./ (x&$)&.< y') but the final
> form isn't tacit, which is not a big problem; however I'm interested
> in knowing other possibilities.
>
> Any suggestions?
>
>
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
>
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
>
__________________________________________________
Do You Yahoo!?
Tired of spam? Yahoo! Mail has the best spam protection around
http://mail.yahoo.com
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm