Сумма по модулю 2 - всевозможные комбинации кода

191
26 июня 2018, 01:40

Дано n комбинаций кода длиной m. Как найти сумму по модулю 2 всевозможных комбинаций из n кодов. Результаты записать в массив

Например:
исходные комбинации
1. 1001001
2. 1101110
3. 0110001
4. 0101100
5. 0000111

нужно найти сумму по модулю 2 для всех комбинаций (исходные комбинации тоже могут входить в массив): "+" - сумма по модулю 2

1 =                 1001001
2 =                 1101110
3 =                 0110001
4 =                 0101100
5 =                 0000111
1 + 2 =             0100111
1 + 3 =             1111001
....
2 + 3 =             1011111
2 + 4 =             1000010
....
1 + 2 + 3 + 4 + 5 = 0101001
1 + 2 + 3 + 4 =     0111000
1 + 2 + 3 =         0010110
.....
2 + 3 + 4 + 5 =     1110100
2 + 3 + 4  =        1110011
....

порядок суммирования не важен. Важно чтобы в выходном массиве была сумма всевозможных комбинаций . Целый день ломаю голову над задачей. Может кому-то уже встречалось?

Answer 1

Если я правильно задачу понял, то.

Чтобы перебрать все возможные комбинации для битов, нужно просто использовать счетчик

К примеру, есть входной массив в 5 значение 11001

Создать цикл от 0 до 2 в 5 степени. Теперь, каждое число нужно преобразовать в двоичное представление. Теперь в каждом месте, где встречается единица, соответствующий элемент входного массива необходимо сложить.

import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
public class Main {
    public static void main(String args[]) {
        int[] input = {1, 1, 1, 1, 1, 1};
        Map<String, Integer> output = new HashMap<>();
        for (int i = 0; i < Math.pow(2,input.length); i++) {
            String str = Integer.toBinaryString(i);
            while (str.length()<input.length) str = "0" + str;
            char[] bits = str.toCharArray();
            int s =0;
            for (int j = 0; j < bits.length; j++) {
                if (bits[j] == '1') {
                    s = summ(s, input[j]);
                }
            }
            output.put(Arrays.toString(bits), s);
        }
        for (Map.Entry<String,Integer> i : output.entrySet()) {
            System.out.println(i.getKey() + "  :  "+ i.getValue());
        }
    }
    private static int summ(int a, int b) {
        int result = a + b;
        if (result == 2) return 0;
        return result;
    }
READ ALSO
Можно ли использовать Contact form 7 на wordpress на локальном сервере?

Можно ли использовать Contact form 7 на wordpress на локальном сервере?

Если да, то можете пожалуйста объяснить, как этот плагин установить на openserverУ меня он выдает ошибку: Использован некорректный синтаксис...

238
Прозрачные отступы у шрифтов

Прозрачные отступы у шрифтов

хочу обратиться к вам за помощьюКак убрать эти прозрачные отступы у шрифтов? Я обвел их красным цветов на скриншоте п

212
Как сделать иконки в тексте на Android?

Как сделать иконки в тексте на Android?

Передо мной стоит задача в текст добавлять различные иконкиЧерез какое View мне лучше всего это делать?

223
Как исправить ошибку с post запросом?

Как исправить ошибку с post запросом?

У меня есть django сервер, который должен по нажатия на кнопку send message отправлялось сообщение, а потом переходило в новое окно с надписью "отправлено"Но...

214