using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
public class Test
{
public static void Main()
{
var data = new int[] { 1, 1, 2, 1 };
var results = Enumerable.Range(0, data.Count ())
.Where (i => i == 0 || data.ElementAt(i - 1) != data.ElementAt(i))
.Select (i => new
{
//Key = data.ElementAt(i),
Group = Enumerable.Repeat(data.ElementAt(i),
data.Skip(i)
.TakeWhile (d => d == data.ElementAt(i)).Count ())
}
);
foreach(var item in results)
{
Console.Write("[");
foreach(var num in item.Group)
Console.Write(string.Format("{0} ", num));
Console.WriteLine("]");
}
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKdXNpbmcgU3lzdGVtLkxpbnE7CnVzaW5nIFN5c3RlbS5UZXh0OwoKcHVibGljIGNsYXNzIFRlc3QKewoJcHVibGljIHN0YXRpYyB2b2lkIE1haW4oKQoJewoJdmFyIGRhdGEgPSBuZXcgaW50W10geyAxLCAxLCAyLCAxIH07CgkKCXZhciByZXN1bHRzID0gRW51bWVyYWJsZS5SYW5nZSgwLCBkYXRhLkNvdW50ICgpKQoJCS5XaGVyZSAoaSA9PiBpID09IDAgfHwgZGF0YS5FbGVtZW50QXQoaSAtIDEpICE9IGRhdGEuRWxlbWVudEF0KGkpKQoJCS5TZWxlY3QgKGkgPT4gbmV3CgkgICAgICAgICAgICAgICAgICB7CgkJCS8vS2V5ID0gZGF0YS5FbGVtZW50QXQoaSksCgkJCUdyb3VwID0gRW51bWVyYWJsZS5SZXBlYXQoZGF0YS5FbGVtZW50QXQoaSksIAoJCQkJZGF0YS5Ta2lwKGkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLlRha2VXaGlsZSAoZCA9PiBkID09IGRhdGEuRWxlbWVudEF0KGkpKS5Db3VudCAoKSkKCSAgICAgICAgICAgICAgICAgIH0KCQkJICAgICApOwoJCQoJCWZvcmVhY2godmFyIGl0ZW0gaW4gcmVzdWx0cykKCQl7CgkJCUNvbnNvbGUuV3JpdGUoIlsiKTsKCQkJZm9yZWFjaCh2YXIgbnVtIGluIGl0ZW0uR3JvdXApCgkJCQlDb25zb2xlLldyaXRlKHN0cmluZy5Gb3JtYXQoInswfSAiLCBudW0pKTsKCQkJQ29uc29sZS5Xcml0ZUxpbmUoIl0iKTsKCQl9CiAgCX0KfQ==