On Mon, Dec 01, 2014 at 06:37:13PM +0000, Tobias Pankrath via Digitalmars-d-learn wrote: > Basically I need std.algorithm.uniq or std.algorithm.group, but > instead of a single element or an element and a number I want ranges > that each contain consecutive elements considered equal. > > Example: [1,1, 2,2,2,3,4,4] -> [1, 1], [2,2,2], [3], [4,4]. > > Let's call this uniqRange. This way std.algorithm.uniq could be > implemented as > > auto uniq(R, pred)(R input) > { > return uniqRange!pred(R).map!(r => r.front)); > } > > Is there any elegant way to do this with using phobos? Or do I need to > write my own range?
Phobos git HEAD has a new range adaptor called groupBy that does what you want: assert([1,1,2,2,2,3,4,4].groupBy!((a)=>a).equal( [[1,1], [2,2,2], [3], [4,4]] )) T -- You have to expect the unexpected. -- RL