[Jprogramming] 2 f 3 f 4 f m
Dan Bron
jf at dbron.net
Sat May 13 04:38:39 HKT 2006
It probably won't generalize, but in this particular case, the following works:
gu =. 1 : '(u/~ u/\@:|.@:({.~ >:@:#))~'
L + gu R
0 1
2 3
10 11
12 13
18 19
20 21
24 25
26 27
28 29
30 31
30 31
32 33
Some timings:
'a1 b1'=:4!:5&.> i.2
recf =. 1 : 0
:
s =. y
r =. ,:y
for_i.
i. # x
do. s =. (i{x) u s
r =. r,s
end.
r
)
jackson0=: + recf f.
seq =. ((&.>) /) (@:((|.@:[) , (<@:]))) (>@:) NB. Due to Quintana
bron0 =: (+ seq f.~ <"_1)~ NB. No intermediate results
seq =. <"_1@|.@[ , <@]
update =. (] ,(+&.> {:))/
phil0 =: [: > update at seq f. NB. Doesn't meet spec
reboss0 =: [: > [: +&.>/\.&.|. <@],<"_1@[
ug =. 2 : '[: >@:({."1) (2&(u&.>/@:{. , }.)^:(1 < #)^:n @: (; <"_1@:|.)~)'
bron1 =: + ug a: f.
gu =. 1 : '(u/~ u/\@:|.@:({.~ >:@:#))~'
bron2 =: + gu f.
enshape =. ] , ($"_ _1~ $)
oleg0 =: +/\@enshape f.
'a1 b1' =: 4!:5&.> i._2
b1 =: (;:'a1 b1') -.~(#~ =&({.;:'_base_'))/ |: (split~ i:&2@:(* +/\.)@:=&'_')&> a1
small =: (+: i. 5 ) 1000 H b1 i. 2 2
medium =: (+: i. 500) 10 H b1 i. 2 2
large =: (+: i. 5000) 1 H b1 i. 2 2
]A =: (cmpr_rpt ".&.>) ;: 'small medium large'
set alg time space
------ -------- -------- -------
bron0 1.57 1.50
bron1 5.18 2.15
bron2 1.00 1.00
small jackson0 6.28 2.85
oleg0 1.01 1.15
phil0 2.75 1.65
reboss0 2.09 2.30
bron0 16.07 3.50
bron1 2269.77 300.23
bron2 1.00 1.00
medium jackson0 109.90 1.54
oleg0 3.96 1.55
phil0 680.41 7.10
reboss0 20.33 13.02
bron0 18.57 2.79
bron1 26203.71 2205.21
bron2 1.00 1.00
large jackson0 128.87 1.41
oleg0 4.63 1.60
phil0 7851.63 4.84
reboss0 62.41 9.17
More information about the Programming
mailing list