On 02/06/2017 09:00 PM, Dmitry wrote:
> On Monday, 6 February 2017 at 18:57:17 UTC, Ali Çehreli wrote:
>> I think  it's now std.algorithm.chunkBy. Please fix Rosetta
>
> Thank you!
> I fixed

Thank you!

> but anyway it works incorrect (it doesn't any changes):

The problem was with the following loop:

    foreach (test; tests)
        writeln(test, "\n", test.naturalSort, "\n");

test.naturalSort would sort the array in place before calling writeln and 'test' would appear naturally sorted as well. I've fixed it like this:

    foreach (test; tests) {
        printTexts("Test strings", test);
        printTexts("Normally sorted", test.dup.sort());
        printTexts("Naturally sorted", test.dup.naturalSort());
    }

I had fun inserting "[sic]"s both in source code and in the output for the INDEPENENT typo in the problem description. :D

    void printTexts(Range)(string tag, Range range) {
        const sic = range.front.canFind("INDEPENENT") ? " [sic]" : "";
        writefln("\n%s%s:\n%-(  |%s|%|\n%)", tag, sic, range);
    }

I also made the output more readable:

Test strings:
  |ignore leading spaces: 2-2|
  | ignore leading spaces: 2-1|
  |
     ignore leading spaces: 2+1|
  |  ignore leading spaces: 2+0|

Normally sorted:
  |
     ignore leading spaces: 2+1|
  |  ignore leading spaces: 2+0|
  | ignore leading spaces: 2-1|
  |ignore leading spaces: 2-2|

Naturally sorted:
  |  ignore leading spaces: 2+0|
  |
     ignore leading spaces: 2+1|
  | ignore leading spaces: 2-1|
  |ignore leading spaces: 2-2|

[...]

Ali

Reply via email to