将序号列添加到 J 中自定义动词的输出

Add ordinal number column to output of custom verb in J

如果我输入 !i.10,它会给出前 10 个数字的阶乘。 但是,如果我尝试添加一列序数 >/.!i.10, 1+i.10,则 J 会冻结或出现“内存不足”错误。如何创建自定义表格?

我认为正在发生的事情是你正在创造比你预期的更大的东西。逐步实施:

   1+ i. 10 NB. list of 1 to 10
1 2 3 4 5 6 7 8 9 10
   10 , 1+ i. 10 NB. 10 prepended
10 1 2 3 4 5 6 7 8 9 10
   i. 10 , 1+ i. 10 NB. creates an 11 dimension array with shape 10 1 2 3 4 5 6 7 8 9 10 and largest value of 36287999

当您将 ! 应用于 i. 10 , 1+ i. 10 时,您会得到一些非常大的数字。我不确定您要对前导 >/.

做什么

这是你的想法吗?

   (!1 + i.10),. (1+i.10) NB. using parenthesis to isolate operations
       1  1
       2  2
       6  3
      24  4
     120  5
     720  6
    5040  7
   40320  8
  362880  9
3.6288e6 10

要提供扩展类型并摆脱 3.6288e6 我们可以使用 x:

 (x:!1 + i.10),. (1+i.10)
      1  1
      2  2
      6  3
     24  4
    120  5
    720  6
   5040  7
  40320  8
 362880  9
3628800 10

或默认

   (x:@! ,. ]) @ (1+i.) 10
      1  1
      2  2
      6  3
     24  4
    120  5
    720  6
   5040  7
  40320  8
 362880  9
3628800 10

或者我觉得好一点的版本

   ([: (,.~ !) 1x + i.) 10
      1  1
      2  2
      6  3
     24  4
    120  5
    720  6
   5040  7
  40320  8
 362880  9
3628800 10