Update:

ah=: 1 1 0 1 1x
bh=: 1 _1 0 _1 1x

ppr=: +//.@(*/)

mulSqAt=: 4 : 0
 nx=. #x
 ax=. i:<.-: nx
 ay=. <.-: #y
 aymi=. ay + I - ax
 aymj=. ay + J - ax
 nuli=. 0$~+/-.(#y)>aymi
 nulj=. 0$~+/-.(#y)>aymj
 p1=. +/ x * (aymi){y,nuli
 p2=. +/ x * (aymj){y,nulj
 p1*p2
)

pathstr =: 4 : 0
 'I J'=: y
 ep=:  ((0x&(,+,~)^: (]`1:))*(_1x&*^:(<@(1&+)`(_1x&^)))) x
 tp=: (ah&ppr&.>^: (<x+1) <1)  mulSqAt &.> |. bh&ppr&.>^: (<x+1) <1
 (2x^x)%~ +/ ep * > tp
)

   100 pathstr 4 4
2422219241769802380469882122062019059350760968380804461263234408581143863208781993964800

   ts '100 pathstr 4 4'
0.535013 10054144

Time to speed up things!

=@@i


Aai schreef:
> Trying to translate some parts of pathstensor from part IV:
>
> The part with 'multinomial' * sign:
>    multinomial [na,nb] * (-1)^nb
>
> can be interpreted as:
>
> mnpd=: (0&(,+,~)^: (]`1:))*(_1&*^:(<@(1&+)`(_1&^)))
>
> (not really a first shot for) emulating mulArray and powers_of:
>
> a=: _2]\ _2 1 _1 1 0 0 1 1 2 1
> b=: _2]\ _2 1 _1 _1 0 0 1 _1 2 1
>  
> mularr=: [:({...@{.,+/@{:)@|:/.({.,{:)@(+,*)"1"1 _
>
> powers_of=: 4 : 0
>   if. 0=y do. 0 1 return. end.
>   if. 1=y do. x return. end.
>   x&mularr^: (y-1) x
> )
>
> Some examples:
>
>    a powers_of 0
> 0 1
>    a powers_of 1
> _2 1
> _1 1
>  0 0
>  1 1
>  2 1
>    a powers_of 2
> _4 1
> _3 2
> _2 1
> _1 2
>  0 4
>  1 2
>  2 1
>  3 2
>  4 1
>
> However they will be way too slow for pathstensor 100 (4,4). So
> something to chew on.
>
> ... still trying to wrap my brain around 'mulSquareAt arr arr (i,j)' and
> all the other stuff :-)
>
>
>
> =@@i
>  
>
>
> Tracy Harms schreef:
>   
>> There is a lot of array-oriented thinking in a series of four blog
>> posts by Twan van Laarhoven. The ideas include tensor product of rings
>> and arrays as polynomials. Although his code is in Haskell, some here
>> may share my interest in what he's written. I won't be surprised if
>> somebody finds something fun to translate into J, or to do differently
>> in J.
>>
>> Part one is here:
>> http://twan.home.fmf.nl/blog/haskell/Knight1.details
>>
>> The overall blog post series (with all four parts) is here:
>> http://twan.home.fmf.nl/blog/
>>
>> The problem examined is:  A knight is placed at the origin of a
>> chessboard that is infinite in all directions. How many ways are there
>> for that knight to reach cell (i,j) in exactly n moves?
>>
>> --
>> Tracy
>> ----------------------------------------------------------------------
>> For information about J forums see http://www.jsoftware.com/forums.htm
>>
>>
>>   
>>     
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
>
>   
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to