Мне нужно принять решение на основе довольно большого набора из 8 взаимозависимых условий.
| A | B | C | D | E | F | G | H
-----------+---+---+---+---+---+---+---+---
Decision01 | 0 | 1 | - | 1 | 0 | 1 | - | 1
Decision02 | 1 | 0 | - | 0 | 0 | - | 1 | -
...
Decision11 | 1 | 0 | 1 | 1 | 1 | - | 1 | 1
Каждое из условий от A до H может быть истинным (1), ложным (0) или нерелевантным (-) для решения.
Таким образом, при заданном входе
A B C D E F G H
1 0 1 0 0 1 1 1
он должен оцениваться как Decision02.
Решения однозначны, поэтому из любого заданного набора входных условий ясно, какое решение должно быть принято (и в случае, который не охвачен матрицей решений, должно быть выдано исключение).
Разработчик, работавший до меня над этим проектом, пытался реализовать его в виде бегемота с вложенными if длиной в 500 строк, который, конечно, чертовски глючит и не поддается сопровождению.
Поэтому я искал лучший способ реализовать такую логику и наткнулся на таблицы решений/таблицы поиска/управляющие таблицы.
Я нашел много генераторов таблиц решений, но ни одного фрагмента кода о том, как реализовать процесс принятия решений :(
Я могу сделать таблицу решений в базовой базе данных MSSQL, или в коде, или в xml, или в чем угодно. Мне просто нужно несколько указателей на то, как реализовать это вообще.
Как лучше всего реализовать эту логику? Словарь? Многомерный массив? Что-то совсем другое?