Sergey Alexandrovich Kryukov
Итак, что же такого замечательного? У вас просто есть два массива с разной длиной. Вы индексируете диапазон, выходящий за пределы одного из массивов. Хорошо, я чувствую, что мой предыдущий ответ может помочь. Ваш предыдущий вопрос был удален, что очень плохо (кто это сделал?!!).
Ваш код просто не имеет большого смысла.
Однако… эта задача имеет некоторый смысл, если ее обобщить. Во-первых, давайте сделаем элемент массива универсальными параметрами, потому что проблема на самом деле не зависит от него. Давайте сделаем количество массивов произвольным, количество элементов в каждом массиве произвольным и абстрагируем наши условия. Кроме того, давайте сделаем ряд условий произвольными.
Это может иметь некоторый смысл, по крайней мере отдаленно; и, конечно, специальная проблема не будет иметь большого смысла. Что, с жестко закодированными диапазонами массивов и т. д.? Давай…
Этот набор входных данных будет генерировать более одного метода проверки состояния, потому что — как определить, что такое проверка? Я покажу только один из таких методов предикатов, который проверяет, что все условия для всех элементов массива выполняются верно:
static bool AllConditionsValidForAllArrayElements<T>(
T[][] arrays,
System.Func<int,
T, bool>[] conditions)
{
foreach (T[] array in arrays) {
int index = 0;
foreach(T element in array)
foreach (System.Func<int, T, bool> condition in conditions) {
if (!condition(index, element))
return false;
++index;
} //loop in conditions
} // loop in arrays
return true;
} //AllConditionsValidForAllArrayElements
Используя тот же принцип, можно построить различные предикаты на этом наборе данных, такие как "по крайней мере один элемент массива удовлетворяет по крайней мере одному условию", "по крайней мере один элемент массива удовлетворяет всем условиям", "все элементы по крайней мере одного массива удовлетворяют по крайней мере одному условию", "все элементы по крайней мере одного массива удовлетворяют всем условиям", "по крайней мере одно условие удовлетворяется всеми элементами массива" и т. д. Тот, кто может перечислить их все, по крайней мере, хороший ученик. :-)
Здесь только одна проблема: простейший анализ показывает, что вложенные циклы лучше по производительности, чем любые мыслимые способы их объединения в один цикл, ну и что? Я предупреждал о фантазии в своем комментарии к первой версии этого вопроса…
—СА