假设两个不同大小的数组:
N0 =: i. 50
N1 =: i. 500
应该有一种方法可以获得唯一的对,只需将两者结合起来即可。我发现的“最简单”是:
]$R =: |:,"2 |: (,.N0) ,"1 0/ N1
25000 2
坦率地说,这是一个丑陋的棒球棒解决方案。有没有更优雅的方法来做到这一点?
假设两个不同大小的数组:
N0 =: i. 50
N1 =: i. 500
应该有一种方法可以获得唯一的对,只需将两者结合起来即可。我发现的“最简单”是:
]$R =: |:,"2 |: (,.N0) ,"1 0/ N1
25000 2
坦率地说,这是一个丑陋的棒球棒解决方案。有没有更优雅的方法来做到这一点?
您要获取的数据模式是Catalogue 的变体。事实上,它是最著名的变体:笛卡尔积。
在目录的词汇表中,还有笛卡尔积的代码。要获得您想要的列表,只需解开并打开结果。
pair=: >@ ,@ { @(,&<)
$ N0 pair N1
25000 2
我正在寻找同样的东西。
我只提出了以下更短但不漂亮的:
,/(N0 ,. ])"0 N1
;(N0 ,. ]) &.> N1
或形式:
;N0&,.&.>N1