У меня есть такая ситуация, что я должен позволить пользователям определять решения на основе количества заданных условий. Например, моей программе необходимо автоматически сгенерировать матрицу, как показано ниже, учитывая, что есть два условия (IsMale и IsSmoker):
IsMale: YES YES NO NO
IsSmoker: YES NO YES NO
И определение определяется пользователем, поэтому может быть допустимо любое из следующего:
IsMale: YES YES NO NO
IsSmoker: YES NO YES NO
Decision: T F T F
IsMale: YES YES NO NO
IsSmoker: YES NO YES NO
Decision: F F F F
IsMale: YES YES NO NO
IsSmoker: YES NO YES NO
Decision: T T T T
Для каждого условия может быть только два состояния: True и False . Таким образом, общее количество комбинаций рассчитывается следующим образом:
нет из возможных состояний (S) в степени нет из состояний (C)
S ^ C = общее количество комбинаций
4 возможности (2 ^ 2 = 4)
Condition A T T F F
Condition B T F T F
8 возможностей (2 ^ 3 = 8)
Condition A T T T T F F F F
Condition B T T F F T F T F
Condition C T F T F T T F F
Надеюсь, я объяснил себя немного лучше, чем первоначальный вопрос.
Обновлен:
в соответствии с ответом Гуффа . Ниже приведен ручной расчет его алгоритма для генерации различных комбинаций.
4 possibilities (2^2=4)
index = 0, (сдвиг вправо 0)
binary 8 4 2 1 Value
original 0 0 0 1 1
& 1 0 0 0 1 1 T
original 0 0 1 0 2
& 1 0 0 0 1 0 F
original 0 0 1 1 3
& 1 0 0 0 1 1 T
original 0 1 0 0 4
& 1 0 0 0 1 0 F
index = 1, (сдвиг вправо 1)
binary 8 4 2 1 Value
original 0 0 0 1 1
shift 0 0 0 0 0
& 1 0 0 0 1 0 F
original 0 0 1 0 2
shift 0 0 0 1 1
& 1 0 0 0 1 1 T
original 0 0 1 1 3
shift 0 0 0 1 1
& 1 0 0 0 1 1 T
original 0 1 0 0 4
shift 0 0 1 0 2
& 1 0 0 0 1 0 F
комбинация:
Condition 1: TFTF
Condition 2: FTTF