Кажется, у вас есть двумерный зубчатый массив . Вы можете упростить свой код, используя Except
и проверять разницу между массивом allnumbers
и одной строкой на каждой итерации l oop.
static bool CheckLine(int[,][] array)
{
int[] allnumbers = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
foreach (var singlearray in array)
{
var diff = allnumbers.Except(singlearray);
if (!diff.Any())
{
return true;
}
}
return false;
}
Если в разнице нет элементов, это будет означать, что один элемент из исходного 2D-массива имеет все элементы из allnumbers
массива.
Пример использования
var array = new int[2, 2][];
array[0, 0] = new[] { 1, 2, 8 };
array[0, 1] = new[] { 3, 4, 5, 6 };
array[1, 1] = new[] { 3, 2, 1, 4, 5, 7, 6, 10, 9, 8 };
array[1, 0] = new[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
CheckLine(array);
Последние два элемента удовлетворяют условию, выполнение прервется и вернет true
для массива { 3, 2, 1, 4, 5, 7, 6, 10, 9, 8 }
. Также не забудьте добавить директиву using System.Linq
вверху файла