Сложение по модулю 2 - C#
Формулировка задачи:
В общем такая проблема: нужно реализовать сложение по модулю 2, для любого количества элементов(элементами являются векторы).
Есть код для 2х элементов
и для 3х
а я не представляю, как это сделать для n векторов, я думаю, что нужно использовать params но остается вопрос, как
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; }
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; }
Решение задачи: «Сложение по модулю 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; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д