CSharp · Console
using System;
using System.Linq;
public class Program
{
public static void Main()
{
int[] arr = new int[] { 1, 2, 3, 4, 5, 0, 0, 0, 0, 7, 8, 9};
int[] mask = new int[] { 0, 0, 0, 0 };
int[] subArr = new int[0];
var start = DateTime.Now;
var linesToTest = 10000;
for(int i = 0; i < linesToTest; i++)
{
subArr = SubArrayTillMask(2, arr, mask);
}
//Console.WriteLine(String.Join(",",subArr));
Console.WriteLine("Tested " + linesToTest + " lines in " + (DateTime.Now - start).TotalSeconds + " seconds");
}
static int[] SubArrayTillMask(int start, int[] array, int[] mask )
{
var foundPos = -1;
var len = mask.Length;
var limit = array.Length - len;
for( var i = 0; i <= limit; i++ )
{
var k = 0;
for( ; k < len; k++ ) {
if( mask[k] != array[i+k] ) break;
}
if( k == len ) foundPos = i;
}
if(foundPos == -1)
return array;
return array.Skip(start).Take(foundPos-start).ToArray();
}
}