Сложение по модулю 2 - C#

Узнай цену своей работы

Формулировка задачи:

В общем такая проблема: нужно реализовать сложение по модулю 2, для любого количества элементов(элементами являются векторы). Есть код для 2х элементов
public int[] plus(int[] a, int[] b)
        {
            int[] c = new int[a.Length];
            for (int i = 0; i < a.Length; i++)
            {
                c[i] = a[i] + b[i];
                if (c[i] > 1)
                    c[i] = 0;
            }
            return c;
        }
и для 3х
public int[] plus(int[] a, int[] b, int[] c)
        {
            int[] sizes = new int[3];
            sizes[0] = a.Length;
            sizes[1] = b.Length;
            sizes[2] = c.Length;
            int max = int.MinValue;
            for (int i = 0; i < 3; i++)
            {
                if (sizes[i] > max)
                    max = sizes[i];
            }
            int[] result = new int[max];
            result = plus(a, plus(b, c));
            return result;
        }
а я не представляю, как это сделать для n векторов, я думаю, что нужно использовать params но остается вопрос, как

Решение задачи: «Сложение по модулю 2»

textual
Листинг программы
        public int[] Sum(params int[][] arr)
        {
            int max = arr.Max(x => x.Length);
            int[] result = new int[max];
            for (int j = 0; j < max; j++)
            {
                int s = 0;
                for (int i = 0; i < arr.GetLength(0); i++)
                {
                    if (arr[i].Length > j)
                        s += arr[i][j];
                }
                result[j] = s % 2;
            }
            return result;
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4 из 5
Похожие ответы