У меня есть такая ситуация, когда мне нужно, чтобы пользователи определяли решения на основе количества заданных условий. Например, моя программа должна автоматически генерировать матрицу, как показано ниже, учитывая, что существуют два условия (IsMale и IsSmoker):Программно генерировать таблицу решений в C#?
IsMale: YES YES NO NO
IsSmoker: YES NO YES NO
И deicsion определяется пользователем, поэтому любое из следующих действий может быть действительным:
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
Для каждого условия могут быть только два состояния, Правда и Ложные. Таким образом, общее число комбинаций не вычисляются, как показано ниже:
нет возможных состояний (S) к мощности не из условий (С) S не^С = общее количество комбинаций
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
Надеюсь, я объяснил, что немного лучше исходного вопроса.
Обновлено: в соответствии с ответом Guffa. Ниже приведен расчет его алгоритма для генерации различных комбинаций.
4 possibilities (2^2=4)
индекс = 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
индекс = 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
Кажется, у вас должна быть надпись на каждом столбце, чтобы это имело смысл? – ScottS
Мартин Фаулер пишет о таблицах решений: http://martinfowler.com/dslwip/DecisionTable.html –
В вычисленных результатах руки исходное значение должно быть в диапазоне от 0 до 3 вместо 1 до 4. – Guffa