Встретился с такой задачей (условие упрощено):
дана последовательность целых чисел. Например,
var numbers = new int[] { 1, 2, 2, 1, 1, 1, 3, 3 };
Надо разбить на группы так, чтобы группа состояла из одинаковых последовательных элементов и была размером не более 2.
Т.е. на выходе должно получится что-то вроде
{ {1}, {2, 2}, {1, 1}, {1}, {3, 3} }
Реализовать используя циклы легко, хочется максимально использовать LINQ.
Здравствуйте, bySerge, Вы писали:
S>Реализовать используя циклы легко, хочется максимально использовать LINQ.
если Вам от этого легче, то можно вот так.
var numbers = new int[] { 1, 2, 2, 1, 1, 1, 3, 3 };
int _groupNo = 0, _count = 0;
int? _prev = null;
var groups = numbers
.GroupBy(x => {
if( _count > 1 || _prev != x )
{
_count = 0;
_groupNo++;
}
_prev = x;
_count++;
return _groupNo;
});