[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