Re: Changing the Natural Sort Order
- To: mathgroup at smc.vnet.net
- Subject: [mg49192] Re: Changing the Natural Sort Order
- From: Paul Abbott <paul at physics.uwa.edu.au>
- Date: Wed, 7 Jul 2004 01:42:25 -0400 (EDT)
- Organization: The University of Western Australia
- References: <ccb5hr$ekg$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
In article <ccb5hr$ekg$1 at smc.vnet.net>,
"David Park" <djmp at earthlink.net> wrote:
> Is it possible to change the natural sort order of symbols that is used in
> Sort?
>
> I would like something like the following statement (that does not work).
>
> Assuming[d < b < c, Sort[{a, b, c, d, f}]]
>
> giving the desired output
>
> {a,d,b,c,f}
>
> I won't be sorting simple lists of symbols, but lists of similar, but
> unspecified, expressions that contain the symbols. For example...
>
> {h[x,g[a]], h[x,g[b]], h[x,g[c]], h[x,g[d]], h[x,g[f]]}
>
> which should give
>
> {h[x,g[a]], h[x,g[d]], h[x,g[b]], h[x,g[c]], h[x,g[f]]}
>
> Is there any way to do this?
I cannot see a simple way (via OrderedQ) to change the sort order of
symbols. However, here is one way to achieve what you want:
[1] Use Ordering to define a set of replacement rules for your symbols:
OrderRule[l_] := Thread[l[[Ordering[l]]] -> l]
For your example,
OrderRule[{d, b, c}]
{b -> d, c -> b, d -> c}
[2] If you would like to use ordering like d < b < c, you could overload
OrderRule as follows:
OrderRule[Unevaluated[Less[l__]]] := OrderRule[{l}]
OrderRule[Unevaluated[Greater[l__]]] := OrderRule[Reverse[{l}]]
[3] Then use Sort followed by OrderRule:
Sort[{a, b, c, d, f}] /. OrderRule[d < b < c]
{a, d, b, c, f}
Sort[{h[x,g[f]], h[x, g[d]], h[x, g[c]], h[x, g[b]], h[x, g[a]]}] /.
OrderRule[d < b < c]
{h[x, g[a]], h[x, g[d]], h[x, g[b]], h[x, g[c]], h[x, g[f]]}
Cheers,
Paul
--
Paul Abbott Phone: +61 8 9380 2734
School of Physics, M013 Fax: +61 8 9380 1014
The University of Western Australia (CRICOS Provider No 00126G)
35 Stirling Highway
Crawley WA 6009 mailto:paul at physics.uwa.edu.au
AUSTRALIA http://physics.uwa.edu.au/~paul
- Follow-Ups:
- Re: Re: Changing the Natural Sort Order
- From: Andrzej Kozlowski <akoz@mimuw.edu.pl>
- Re: Re: Changing the Natural Sort Order