using System;
using System.Linq;
public class Test
{
public static void Main()
{
var data = new[] { 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 2, 2, 2, 2, 2 };
Func<int, bool> acceptPredicate = i => i != 0;
Func<int, bool> rejectPredicate = i => i == 0;
var acceptMode = false;
var groupCount = 0;
var result = data.GroupBy(i => {
if (acceptMode && rejectPredicate(i)) {
acceptMode = false;
++groupCount;
}
else if (!acceptMode && acceptPredicate(i)) {
acceptMode = true;
++groupCount;
}
return groupCount;
})
.Where(g => !rejectPredicate(g.First()))
.FirstOrDefault(g => g.Count() >= 5);
if (result != null) {
Console.WriteLine("Matching sequence found: ");
Console.WriteLine(string.Join(", ", result.Select(o => o.ToString()).ToArray()));
}
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uTGlucTsKCnB1YmxpYyBjbGFzcyBUZXN0CnsKCXB1YmxpYyBzdGF0aWMgdm9pZCBNYWluKCkKCXsKCQl2YXIgZGF0YSA9IG5ld1tdIHsgMCwgMCwgMCwgMCwgMCwgMSwgMSwgMSwgMCwgMCwgMiwgMiwgMiwgMiwgMiB9OwoJCUZ1bmM8aW50LCBib29sPiBhY2NlcHRQcmVkaWNhdGUgPSBpID0+IGkgIT0gMDsKCQlGdW5jPGludCwgYm9vbD4gcmVqZWN0UHJlZGljYXRlID0gaSA9PiBpID09IDA7CgkJCgkJdmFyIGFjY2VwdE1vZGUgPSBmYWxzZTsKCQl2YXIgZ3JvdXBDb3VudCA9IDA7CgkJdmFyIHJlc3VsdCA9IGRhdGEuR3JvdXBCeShpID0+IHsKCQkgICAgaWYgKGFjY2VwdE1vZGUgJiYgcmVqZWN0UHJlZGljYXRlKGkpKSB7CgkJCQlhY2NlcHRNb2RlID0gZmFsc2U7CgkJCQkrK2dyb3VwQ291bnQ7CgkJCX0KCQkJZWxzZSBpZiAoIWFjY2VwdE1vZGUgJiYgYWNjZXB0UHJlZGljYXRlKGkpKSB7CgkJCQlhY2NlcHRNb2RlID0gdHJ1ZTsKCQkJCSsrZ3JvdXBDb3VudDsKCQkJfQoJCQlyZXR1cm4gZ3JvdXBDb3VudDsKCQl9KQoJCS5XaGVyZShnID0+ICFyZWplY3RQcmVkaWNhdGUoZy5GaXJzdCgpKSkKCQkuRmlyc3RPckRlZmF1bHQoZyA9PiBnLkNvdW50KCkgPj0gNSk7CgkJCgkJaWYgKHJlc3VsdCAhPSBudWxsKSB7CgkJCUNvbnNvbGUuV3JpdGVMaW5lKCJNYXRjaGluZyBzZXF1ZW5jZSBmb3VuZDogIik7CgkJCUNvbnNvbGUuV3JpdGVMaW5lKHN0cmluZy5Kb2luKCIsICIsIHJlc3VsdC5TZWxlY3QobyA9PiBvLlRvU3RyaW5nKCkpLlRvQXJyYXkoKSkpOwoJCX0KCQkKCX0KfQ==