Thread overview
sort strings by interpreting them as integrals
Jul 30, 2012
Andrej Mitrovic
Jul 30, 2012
bearophile
Jul 30, 2012
Andrej Mitrovic
July 30, 2012
void main()
{
    string[] x = ["_100", "_10", "_20"];
    sort(x);
    writeln(x);
}

result:
["_10", "_100", "_20"]

I need to treat these as if they were integrals, although the
underscore complicates things here since it should be ignored. So the
result I want is:
["_10", "_20", "_100"]

How would you implement that? It could be a nice exercise! :)
July 30, 2012
Andrej Mitrovic:

> void main()
> {
>     string[] x = ["_100", "_10", "_20"];
>     sort(x);
>     writeln(x);
> }
>
> result:
> ["_10", "_100", "_20"]
>
> I need to treat these as if they were integrals, although the
> underscore complicates things here since it should be ignored. So the
> result I want is:
> ["_10", "_20", "_100"]


import std.stdio, std.algorithm, std.conv;
void main() {
    auto data = ["_100", "_10", "_20"];
    schwartzSort!(s => to!int(s[1 .. $]))(data);
    writeln(data);
}


Bye,
bearophile
July 30, 2012
On 7/30/12, bearophile <bearophileHUGS@lycos.com> wrote:
> import std.stdio, std.algorithm, std.conv;
> void main() {
>      auto data = ["_100", "_10", "_20"];
>      schwartzSort!(s => to!int(s[1 .. $]))(data);
>      writeln(data);
> }

Very nice! Thanks.