MathGroup Archive 2007

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Coding an inverse permutation

  • To: mathgroup at smc.vnet.net
  • Subject: [mg79139] Re: Coding an inverse permutation
  • From: Jean-Marc Gulliet <jeanmarc.gulliet at gmail.com>
  • Date: Thu, 19 Jul 2007 03:38:17 -0400 (EDT)
  • Organization: The Open University, Milton Keynes, UK
  • References: <f7kdht$49n$1@smc.vnet.net>

Diana wrote:
> Folks,
> 
> I have the following list:
> 
> aa={1, 2, 5, 3, 4, 8, 9, 7, 11, 6, 13, 17, 10, 16, 19, 15, 14, 20, 21,
> 23, 25, 12, 29, 31, 18, 22,
>  37, 27, 26, 28, 33, 35, 32, 24, 41, 43, 30, 34, 47, 39, 38, 40, 45,
> 49, 44, 36, 53, 55, 46, 52,
>  59, 51, 50, 56, 57, 61, 62, 42, 67, 71, 48, 58, 65, 63, 64, 68, 69,
> 73, 74, 54, 77, 79, 60, 76,
>  83, 75, 80, 70, 81, 89, 85, 66, 95, 97, 72, 82, 91, 87}
> 
> I want to figure out a clean way to code its inverse permutation.
> 
> The inverse permutation list would start as follows:
> 
> bb={1,2,4,5,3,10,8,6, ...}
> 
> Since "3" is in position 4 of aa, position 3 of bb will be "4".
> Since "5" is in position 3 of aa, position 5 of bb will be "3".
> 
> Can someone give me a suggestion as to how to code this?
> 
> Thanks, Diana

Hi Diana,

The following expression should do what you are looking for.

In[1]:=
aa = {1, 2, 5, 3, 4, 8, 9, 7, 11, 6, 13, 17, 10, 16, 19, 15,
    14, 20, 21, 23, 25, 12, 29, 31, 18, 22, 37, 27, 26, 28, 33, 35, 32,
     24, 41, 43, 30, 34, 47, 39, 38, 40, 45, 49, 44, 36, 53, 55, 46,
    52, 59, 51, 50, 56, 57, 61, 62, 42, 67, 71, 48, 58, 65, 63, 64, 68,
     69, 73, 74, 54, 77, 79, 60, 76, 83, 75, 80, 70, 81, 89, 85, 66,
    95, 97, 72, 82, 91, 87};

Sort[MapIndexed[{#1,Sequence@@#2} &, aa], #1[[1]] < #2[[1]] &][[All, 2]]

Out[2]= {1, 2, 4, 5, 3, 10, 8, 6, 7, 13, 9, 22, 11, 17, 16, 14, 12, \
25, 15, 18, 19, 26, 20, 34, 21, 29, 28, 30, 23, 37, 24, 33, 31, 38, \
32, 46, 27, 41, 40, 42, 35, 58, 36, 45, 43, 49, 39, 61, 44, 53, 52, \
50, 47, 70, 48, 54, 55, 62, 51, 73, 56, 57, 64, 65, 63, 82, 59, 66, \
67, 78, 60, 85, 68, 69, 76, 74, 71, 72, 77, 79, 86, 75, 81, 88, 80, \
87, 83, 84}

Regards,
Jean-Marc


  • Prev by Date: Re: generating non-IID random sequences
  • Next by Date: Re: Re: Re: integration of piecewise convex bivariate function with 6 parameters
  • Previous by thread: Re: Coding an inverse permutation
  • Next by thread: Re: Coding an inverse permutation