I thought this should perform similarly to Igor's proposal,  but evidently not:

NB. input:
   $bigmap
3000 4000
   (+/%#) ,bigmap
0.030052333
   10{.bigm
abcabcabca
   10{.bign
ABCDABCDAB

NB. fns:
    ts      NB. timestamp

6!:2 , 7!:2@]


    acp   NB. IZ

1 : (':'; '; (<"0 x) ,"0 L: 0 m <@#"1 y')


   ix   NB. MD - index of ones in boolean
$ #: I.@,
   doix     MD.  using the index
4 : 0
'mm nn' =. y
map     =. x
'ixl ixr' =. |: ix map
l       =. ixl { mm
r       =. ixr { nn
l,. r
)


   ts'#bigmap ((#L:0"1{:),.&;~+/"1@[ #L:0 {.@]) bigm;bign' NB. RE Boss
0.0317587 14097792
   ts'bigm bigmap acp bign'  NB. Igor Zhuravlov
0.016309 3645696
   ts'bigmap doix bigm;bign' NB. Mike Day
0.0395122 16780064


It's clear I should learn how L: works;   it apparently outclasses I. for this problem,

but why is its application by Igor so much quicker and slimmer than REB's?


Cheers,


Mike



On 23/09/2021 14:12, R.E. Boss wrote:
    map ((#L:0"1{:),.&;~+/"1@[ #L:0 {.@]) 'abc';'ABCD'
aA
aD
bB
bC

My 2 cts.


R.E. Boss


-----Original Message-----
From: Programming <[email protected]> On Behalf Of bill 
lam
Sent: dinsdag 21 september 2021 11:38
To: Programming forum <[email protected]>
Subject: [Jprogramming] cross product

Say I have a boolean matrix
    ] map=. 3 4 $ 1 0 0 1 0 1 1 0 0 0 0 0
1 0 0 1
0 1 1 0
0 0 0 0

and 2 vectors of dimension equal to the 2 sides of the matrix
    m=. 'abc' [ n=. 'ABCD'
  I want a cross product for those 1 in the matrix, with result like this
    _2 ]\ 'aAaDbBbC'
aA
aD
bB
bC

Is it possible to do it without explicit loops? The dimension of the matrix can 
be very large so that generating all cross products then eliminating is not an 
option.
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm



--
This email has been checked for viruses by Avast antivirus software.
https://www.avast.com/antivirus
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to