2

假设两个不同大小的数组:

N0 =: i. 50
N1 =: i. 500

应该有一种方法可以获得唯一的对,只需将两者结合起来即可。我发现的“最简单”是:

]$R =: |:,"2 |: (,.N0) ,"1 0/ N1
25000 2

坦率地说,这是一个丑陋的棒球棒解决方案。有没有更优雅的方法来做到这一点?

4

2 回答 2

2

您要获取的数据模式是Catalogue 的变体。事实上,它是最著名的变体:笛卡尔积。

在目录的词汇表中,还有笛卡尔积的代码。要获得您想要的列表,只需解开并打开结果。

pair=: >@ ,@ { @(,&<)

   $ N0 pair N1
25000 2
于 2012-11-16T00:43:42.713 回答
1

我正在寻找同样的东西。

我只提出了以下更短但不漂亮的:

,/(N0 ,. ])"0 N1

;(N0 ,. ]) &.> N1

或形式:

;N0&,.&.>N1
于 2012-11-15T20:57:39.713 回答