On Monday, July 30, 2012 04:09:18 Andrej Mitrovic wrote: > void main() > { > string[] x = ["_100", "_10", "_20"]; > sort(x); > writeln(x); > }
I have a solution, but I think that it uncovers a bug in sort: import std.algorithm; import std.stdio; void main() { string[] x = ["_100", "_10", "_20"]; sort!"a.length < b.length ? true : a < b"(x); writeln(x); } I get an AssertError about it failing to sort, but the result is correct. It _does_ assume that all numbers start with an underscore and don't have leading zeroes though. If you wanted the underscores to be optional or to allow them anywhere else other than the front (or if you allowed leading zeroes), then it gets considerably more complicated. - Jonathan M Davis