Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var foo = new int[]{1,1,4,5,6,2,3,3,1,7,2,4,2,3};
- IEnumerable<int> Bar(IEnumerable<int> seed, IEnumerable<int> currentLevel = null, int? level = null)
- {
- currentLevel = currentLevel ?? Enumerable.Empty<int>();
- level = level ?? default(int);
- var result = seed
- .OrderBy(_ => _)
- .GroupBy(_ => _)
- .Select(_ => _.Skip(level.Value).Take(1))
- .SelectMany(_ => _);
- if (!result.Any())
- {
- return currentLevel;
- }
- currentLevel = currentLevel.Concat(result);
- return Bar(seed, currentLevel, level + 1);
- }
- Bar(foo).Dump();
Advertisement
Add Comment
Please, Sign In to add comment