Генерация всех двоичных последовательностей разной длины и передача их в функцию - PullRequest
0 голосов
/ 01 мая 2020

Я пытаюсь сгенерировать все двоичные последовательности длиной 9,10 и 17 и передать их функции.

for (int i = 0; i < states1.length; i++) {
        for (int j = 0; j < states2.length; j++) {
            for (int k = 0; k < states3.length; k++) {
                    if(func(sequences1[i],sequences2[j],sequences3[k]) == result) {
                    System.out.println("Success");
                    break;
                    }
           }
        }
    }

sequence1, например, будет содержать все двоичные последовательности длиной 9. Например: 000000001,000000011 ...

"fun c" получает двоичные последовательности и возвращает результат. По сути, у меня проблема в том, что я не знаю, как генерировать последовательности.

Я пытался:

-Твердо их кодировать, слишком много констант.

Читая их из файлов. Были проблемы с зацикливанием линий.

1 Ответ

1 голос
/ 01 мая 2020

Может быть трудно хранить в памяти все двоичные строки длиной 17, поскольку таких строк более 100 тыс., Каждая длиной 17 символов. Я предполагаю, что вы будете кодировать двоичные строки как массив символов из символов «0» и «1»?

Рассмотрите возможность реализации последовательностей как экземпляра генератора (доступно в Java 8+). Это создаст впечатление, что последовательности являются массивами всех возможных битовых строк длины n, когда в действительности они будут генерироваться на лету. Это сокращает использование памяти. Вы можете создать эти экземпляры генератора с помощью метода, который принимает длину строк битов, которые будут получены этим генератором, а затем возвращает генератор, который выдаст все такие строки битов этой длины.

Я буду не беспокойтесь о реализации генератора, пока вы не укажете, как должны кодироваться битовые строки (как целые числа, строки и т. д. c.). Также укажите, важен ли порядок строк битов в последовательности, т. Е. Если для последовательностей 4, 0100 должен быть в индексе сразу после 0011.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...