On 10/3/22 13:48, Andrey Zherikov wrote:
a "rotated view".

Without indexes:

import std.range : empty;

auto rotatedView(R)(R range)
in (!range.empty)
{
    import std.range : chain, front, only, popFront;
    const fr = range.front;
    range.popFront();
    return chain(range, only(fr));
}

void main()
{
    import std.algorithm : equal;
    int[] arr1 = [ 1, 2, 3, 4 ];
    assert(arr1.rotatedView.equal([ 2, 3, 4, 1 ]));

    // Now this is getting a little expensive! :)
    assert(arr1
           .rotatedView
           .rotatedView
           .equal([ 3, 4, 1, 2 ]));
}

Ali


Reply via email to