fork(1) download
  1. using System;
  2. using System.Linq;
  3.  
  4. public class Test
  5. {
  6. public static void Main()
  7. {
  8. var data = new[] { 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 2, 2, 2, 2, 2 };
  9. Func<int, bool> acceptPredicate = i => i != 0;
  10. Func<int, bool> rejectPredicate = i => i == 0;
  11.  
  12. var acceptMode = false;
  13. var groupCount = 0;
  14. var result = data.GroupBy(i => {
  15. if (acceptMode && rejectPredicate(i)) {
  16. acceptMode = false;
  17. ++groupCount;
  18. }
  19. else if (!acceptMode && acceptPredicate(i)) {
  20. acceptMode = true;
  21. ++groupCount;
  22. }
  23. return groupCount;
  24. })
  25. .Where(g => !rejectPredicate(g.First()))
  26. .FirstOrDefault(g => g.Count() >= 5);
  27.  
  28. if (result != null) {
  29. Console.WriteLine("Matching sequence found: ");
  30. Console.WriteLine(string.Join(", ", result.Select(o => o.ToString()).ToArray()));
  31. }
  32.  
  33. }
  34. }
Success #stdin #stdout 0.05s 37248KB
stdin
Standard input is empty
stdout
Matching sequence found: 
2, 2, 2, 2, 2