Я пытаюсь что-то сделать, но это вне моего поля. Объяснение позволяет установить n = 3 для упрощения вещей, где n - общее число параметров в этом примере: A, B, C. Эти параметры могут иметь состояние ON и OFF (aka 0 или 1). Общее число комбинаций этих параметров равно 2^п = 8 в этом случае, который можно представить в виде:Алгоритм, чтобы я мог индексировать 2^n комбинаций таким образом, чтобы я мог отступать от любого значения индекса от 1 до 2^n без использования массива
ABC
1: 000
2: 111
3: 100
4: 010
5: 001
6: 110
7: 011
8: 101
Конечно, приведенный выше список может быть отсортирован в (2^п)! = 40320 способов. Я хочу алгоритм, чтобы я мог рассчитать состояние любого из моих параметров (0 или 1) с числом от 1 до 2^n. Например, если у меня есть число 3, используя приведенную выше таблицу, я знаю, что состояние A равно 1, а B и C равно 0. Конечно, вы можете иметь таблицу/массив, чтобы искать ее при определенной сортировке, но даже для относительно небольших значения n вам нужно иметь огромную таблицу.
Я не знаком с этим и методами, которые вы можете делать с индексацией, поэтому мне нужна помощь.
С уважением
Если вам не нужен точный порядок, указанный выше, он просто подсчитывается в двоичном формате. – melpomene
Хотя я не знаю конкретного ответа, вы, вероятно, должны искать что-то, связанное с «перечислением перестановок». Существует несколько способов генерации и/или вызова определенной перестановки (https://en.wikipedia.org/wiki/Permutation#Algorithms_to_generate_permutations). Но есть еще несколько шагов, чтобы заставить ее делать то, что вы хотите ... – viraptor
Мне не нужны точный список, я хочу, чтобы я мог вычислить состояние любого параметра для любого значения от 1 до 2^n, что требует согласованного метода индексирования. Я буду изучать это, но я не программист и не электрик/электронный инженер, поэтому любая информация ценится. – TnF