There's an easier way to do it.
perm=: [EMAIL PROTECTED] A. i.
perm 3
0 1 2
0 2 1
1 0 2
1 2 0
2 0 1
2 1 0
data=: 10 20 30
{&data perm 3
10 20 30
10 30 20
20 10 30
20 30 10
30 10 20
30 20 10
you just bind amend with its y dyad argument, and you
have a Monad... that can operate on the original x
argument.
Sorry if I misunderstood what you wanted.
--- "R.E. Boss" <[EMAIL PROTECTED]> wrote:
> J does not have a primitive verb which permutes
> values of atoms, like C.
> permutes indexes.
>
>
>
> So, if P would be such a primitive, then (5 0 3; 1
> 2) P y would replace in
> y each 5 by 0, each 0 by 3 and each 3 by 5 and swap
> 1's and 2's.
>
> Contrary to the behaviour of C. , preferably P
> accepts only boxed left hand
> argument.
>
>
>
> One way to realize P with the use of C. is:
>
> P=: [EMAIL PROTECTED] $ (((i.!.0~ ~.)@] { (((i.&.>~<) C. ]) ~.))
> ,)
>
>
>
> a ; (5 0 3;1 2) P a =: 3 4 [EMAIL PROTECTED]
>
> +---------+---------+
>
> |0 5 5 4 2|3 0 0 4 1|
>
> |3 2 1 4 2|5 1 2 4 1|
>
> |0 2 1 4 1|3 1 2 4 2|
>
> |2 4 0 4 0|1 4 3 4 3|
>
> | | |
>
> |5 4 0 0 0|0 4 3 3 3|
>
> |5 1 5 0 4|0 2 0 3 4|
>
> |5 5 2 0 0|0 0 1 3 3|
>
> |1 1 5 3 1|2 2 0 5 2|
>
> | | |
>
> |3 2 1 1 3|5 1 2 2 5|
>
> |4 4 3 5 5|4 4 5 0 0|
>
> |5 0 1 0 3|0 3 2 3 5|
>
> |1 3 5 0 1|2 5 0 3 2|
>
> +---------+---------+
>
>
>
> As can be seen, realizing P using C. can be rather
> complicated
>
> On the other hand, it would be easy to realize C.
> with the help of P, as C.
> is a special case of P, applying P to the array of
> indexes.
>
> C. would be (roughly) equal to (P [EMAIL PROTECTED]) { ]
>
> (5 0 3;1 2) ((P [EMAIL PROTECTED]) { ]) 'ABCDEF'
>
> DCBFEA
>
>
>
> The conclusion seems to be that P is more primitive
> than C.
>
>
>
> What is the opinion of the forum on this?
>
>
>
> R.E. Boss
>
>
>
>
----------------------------------------------------------------------
> For information about J forums see
> http://www.jsoftware.com/forums.htm
>
__________________________________________________
Do You Yahoo!?
Tired of spam? Yahoo! Mail has the best spam protection around
http://mail.yahoo.com
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm