3

想象一下,我想取从 1 到 3 的数字并形成一个矩阵,以便表示每个可能的配对,例如,

1 1
1 2
1 3
2 1
2 2
2 3
3 1
3 2
3 3

这是我在 J 中制定的单子动词来做到这一点:

($~ (-:@# , 2:)) , ,"0/~ 1+iy

最初我认为,"0/~ 1+i.y这就足够了,但不幸的是,这会产生以下输出:

1 1
1 2
1 3

2 1
2 2
2 3

3 1
3 2
3 3

换句话说,它的形状是 3 3 2,我想要一个形状是 9 2 的东西。我能想到的唯一修复方法是将所有数据倒入一个新形状中。我相信必须有一种更简洁的方法来做到这一点。有人知道吗?

4

3 回答 3

5

可以简化重塑中间结果。删除最上面的轴通常是这样完成的,,/所以在你的情况下,完成的短语可能是,/ ,"0/~ 1+i.y

于 2010-09-24T13:38:04.160 回答
4

一种方式({在排列目录中用作单子):

>,{ 2#<1+i.y

编辑:

这个方案有一些乐趣:

所有可能的排列:

>,{ y#<1+i.y

可配置序号:

>,{ x#<1+i.y
于 2010-09-17T21:33:51.287 回答
2

我意识到这个问题已经过时了,但有一种更简单的方法可以做到:以三进制数到 9,然后加 1。

   1 + 3 3 #: i.9
1 1
1 2
1 3
2 1
2 2
2 3
3 1
3 2
3 3

3 3 & #:你两位数。一般的“base 3”动词是3 & #.^:_1.

于 2015-01-13T19:28:11.533 回答