I am programming with J. I have this vector:

    F =: 5>\i.10
    F
0 1 2 3 4
1 2 3 4 5
2 3 4 5 6
3 4 5 6 7
4 5 6 7 8
5 6 7 8 9

How can I have this vector as result:

   (*/ 0 1 2 3 4), (*/ 1 2 3 4 5), (*/ 2 3 4 5 6), (*/ 3 4 5 6 7), (*/ 4 5 6 7 8), (*/ 5 6 7 8 9)
0 120 720 2520 6720 15120
   NB. I want to multiply all the rows

I tried:

   */ F
0 720 5040 20160 60480

but, how you can see it multiply the columns, and I want the rows. How can I use the */ to multiply the rows? Thank you all!

有帮助吗?

解决方案

In short, what you want is 5 */\ i.10

   5 */\ i.10
0 120 720 2520 6720 15120

However, if you ever run across this issue in another context, and you really want to address the rows, you could say:

   ]M=:5>\i. 10
0 1 2 3 4
1 2 3 4 5
2 3 4 5 6
3 4 5 6 7
4 5 6 7 8
5 6 7 8 9

   */ rows M
0 120 720 2520 6720 15120

Rows is defined by the standard library as "1. That is, it applies the verb at "rank 1". Rank is a fundamental concept in J, and you'll need to understand it to progress with the language.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top