On 09/12/2015 03:09 PM, "Nordlöw" wrote: > InputRange please, not RandomAccessRanges ;)
Oops! Here's one using only `InputRange` interface: T[][] collate(T)(T[] a) { alias CollateResult = Tuple!(T[][], "result", T, "tlHd"); CollateResult _collate(CollateResult collres) { if (!a.empty) { auto newTlHd = a.front; a.popFront(); return _collate( CollateResult( collres.result ~ [collres.tlHd, newTlHd], newTlHd ) ); } else { return collres; } } if (!a.empty) { auto tlHd = a.front; a.popFront(); return _collate( CollateResult([], tlHd) ).result; } else { return []; } } unittest { writeln([10, 20, 30].collate!int); } -- Bahman Movaqar