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