using System;
using System.Collections.Generic;
using System.Linq;
public class Test
{
class Cls {
public int SequenceNumber { get; set; }
public int Value { get; set; }
public Cls(int a, int b) {SequenceNumber=a;Value=b;}
}
class Run {
public int From {get; set;}
public int To {get; set;}
public int Value {get;set;}
}
public static void Main()
{
var all = new [] {
new Cls(1, 9)
, new Cls(2, 9)
, new Cls(3, 15)
, new Cls(4, 15)
, new Cls(5, 15)
, new Cls(6, 30)
, new Cls(7, 9)
};
var f = all.First();
var res = all.Skip(1).Aggregate(
new List<Run> {new Run {From = f.SequenceNumber, To = f.SequenceNumber, Value = f.Value} }
, (p, v) => {
if (v.Value == p.Last().Value) {
p.Last().To = v.SequenceNumber;
} else {
p.Add(new Run {From = v.SequenceNumber, To = v.SequenceNumber, Value = v.Value});
}
return p;
});
foreach (var r in res) {
Console.WriteLine("{0} - {1} : {2}", r.From, r.To, r.Value);
}
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKdXNpbmcgU3lzdGVtLkxpbnE7CgpwdWJsaWMgY2xhc3MgVGVzdAp7CiAgICBjbGFzcyBDbHMgewogICAgICAgIHB1YmxpYyBpbnQgU2VxdWVuY2VOdW1iZXIgeyBnZXQ7IHNldDsgfQogICAgICAgIHB1YmxpYyBpbnQgVmFsdWUgeyBnZXQ7IHNldDsgfQogICAgICAgIHB1YmxpYyBDbHMoaW50IGEsIGludCBiKSB7U2VxdWVuY2VOdW1iZXI9YTtWYWx1ZT1iO30KICAgIH0KICAgIGNsYXNzIFJ1biB7CiAgICAgICAgcHVibGljIGludCBGcm9tIHtnZXQ7IHNldDt9CiAgICAgICAgcHVibGljIGludCBUbyB7Z2V0OyBzZXQ7fQogICAgICAgIHB1YmxpYyBpbnQgVmFsdWUge2dldDtzZXQ7fQogICAgfQoJcHVibGljIHN0YXRpYyB2b2lkIE1haW4oKQoJewogICAgICAgIHZhciBhbGwgPSBuZXcgW10gewogICAgICAgICAgICBuZXcgQ2xzKDEsIDkpCiAgICAgICAgLCAgIG5ldyBDbHMoMiwgOSkKICAgICAgICAsICAgbmV3IENscygzLCAxNSkKICAgICAgICAsICAgbmV3IENscyg0LCAxNSkKICAgICAgICAsICAgbmV3IENscyg1LCAxNSkKICAgICAgICAsICAgbmV3IENscyg2LCAzMCkKICAgICAgICAsICAgbmV3IENscyg3LCA5KQoJCX07CiAgICAgICAgdmFyIGYgPSBhbGwuRmlyc3QoKTsKICAgICAgICB2YXIgcmVzID0gYWxsLlNraXAoMSkuQWdncmVnYXRlKAogICAgICAgICAgICBuZXcgTGlzdDxSdW4+IHtuZXcgUnVuIHtGcm9tID0gZi5TZXF1ZW5jZU51bWJlciwgVG8gPSBmLlNlcXVlbmNlTnVtYmVyLCBWYWx1ZSA9IGYuVmFsdWV9IH0KICAgICAgICAsICAgKHAsIHYpID0+IHsKICAgICAgICAgICAgaWYgKHYuVmFsdWUgPT0gcC5MYXN0KCkuVmFsdWUpIHsKICAgICAgICAgICAgICAgIHAuTGFzdCgpLlRvID0gdi5TZXF1ZW5jZU51bWJlcjsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHAuQWRkKG5ldyBSdW4ge0Zyb20gPSB2LlNlcXVlbmNlTnVtYmVyLCBUbyA9IHYuU2VxdWVuY2VOdW1iZXIsIFZhbHVlID0gdi5WYWx1ZX0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBwOwogICAgICAgIH0pOwogICAgICAgIGZvcmVhY2ggKHZhciByIGluIHJlcykgewogICAgICAgICAgICBDb25zb2xlLldyaXRlTGluZSgiezB9IC0gezF9IDogezJ9Iiwgci5Gcm9tLCByLlRvLCByLlZhbHVlKTsKICAgICAgICB9Cgl9Cn0=