I'm learning a lot too.
f=: 13 :'(|.({.y){.y),({.y)}.y'
f
([: |. {. {. ]) , {. }. ]
swops2=: f^:a:
swops2 2 3 5 1 4
2 3 5 1 4
3 2 5 1 4
5 2 3 1 4
4 1 3 2 5
2 3 1 4 5
3 2 1 4 5
1 2 3 4 5
Tackling all the permutations look daunting.
Linda
-----Original Message-----
From: [email protected]
[mailto:[email protected]] On Behalf Of David Ward
Lambert
Sent: Monday, November 26, 2012 11:59 PM
To: programming
Subject: Re: [Jprogramming] count iterations
I learned much j tonight. My unnecessary extended precision crushed my
memory.
swops=: ((|.@:{. , }.)~ {.)^:a:
(,. _1 + ! >./@:(#@swops@A. >:)&i. ])&> >:i.10
&> is the same, in this case, as "0 .
Where you have (! hook&i. ]) I had orepeated i. .
Beautiful work!
On Tue, 2012-11-27 at 03:16 +0000,
[email protected] wrote:
> Date: Mon, 26 Nov 2012 22:19:42 -0500
> From: Dan Bron <[email protected]>
> To: "[email protected]" <[email protected]>
> Subject: Re: [Jprogramming] count iterations
> Message-ID: <[email protected]>
> Content-Type: text/plain; charset=us-ascii
>
> I added a solution to the task at RosettaCode. If we let J do the
> work for us, the solution is fairly simple. We use ^:a: ("swop" until
> you hit your fixed point, i.e. until 1={. ) and the count is the
> number of swops, i.e. the length of the result.
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm