Re: Converting a mapping into a well-defined function
- To: mathgroup at smc.vnet.net
- Subject: [mg56544] Re: Converting a mapping into a well-defined function
- From: "Carl K. Woll" <carl at woll2woll.com>
- Date: Thu, 28 Apr 2005 02:40:46 -0400 (EDT)
- References: <79344CBB6297454F86DD3106ADCC76CC82F394@mail3.nwfwmd.state.fl.us>
- Sender: owner-wri-mathgroup at wolfram.com
Gilmar wrote:
> Dear Carl:
> Your map sorts the set A.
> For example, if A={{47, 53}, {31, 61}, {43, 53}, {43, 47}, {37, 61}};
> then using your f[x_] module, we get f[A]= {{31, 61}, {37, 61}, {43,
> 53}, {47, 53}}, when it should be:
> {{47, 53}, {31, 61}, {43, 53}, {37, 61}}; i.e. an unsorted set.
> Nevertheless I don't mind having your version since it can still come
> handy.
It's a simple matter to modify the code to return an unsorted version:
f[x_]:=Module[{tmp},
tmp = Transpose[{x[[All,1]],Range[Length[x]],x[[All,2]]}];
tmp = Split[Sort[tmp], #1[[1]]===#2[[1]]&][[All,1]];
tmp[[Ordering[tmp[[All,2]]]]][[All,{1,3}]]
]
Testing:
A={{47, 53}, {31, 61}, {43, 53}, {43, 47}, {37, 61}};
f[A]
{{47, 53}, {31, 61}, {43, 53}, {37, 61}}
[snip]
Carl Woll