Сегодня мне предложили забавную задачу, и я хочу, чтобы вы рассказали, как бы вы справились с этой ситуацией.
Итак, проблема заключается в следующем (я преобразовал его в демонстрационные данные, поскольку реальная проблема не имела бы большого смысла без знания словаря компании наизусть).
У нас есть таблица решений, которая содержит как минимум 16 условий. Поскольку управлять всеми ими (2^16 возможностей) невозможно, мы решили перечислить только исключения. Как это:
В качестве примера я добавил только 10 условий, но на самом деле их (на данный момент) 16. Основная идея заключается в том, что у нас есть одна базовая линия (по умолчанию), которая действительна для всех и всех исключений из этого значения по умолчанию.
Пример:
У вас есть иностранец, который также является пиратом. Если вы просматриваете все исключения одно за другим и условие за условием, вы удаляете исключения, в которых хотя бы одно условие не выполняется. В конце концов вы получите следующие два исключения, которые действительны для нашего случая. Совпадение по условию IsPirate и IsForeigner. Но, как вы можете видеть, здесь есть 2 результата, а на самом деле 3, если считать по умолчанию.
Наше решение
Теперь мы придумали, как решить эту проблему, так это то, что в графическом интерфейсе, где вы добавляете эти исключения, должен быть запущен алгоритм, который проверяет такие случаи и заставляет вас определять исключение более конкретно. Это все еще только теория, и она еще не проверена, но мы думаем, что это может работать таким образом.
Мой вопрос
Я ищу альтернативные решения, которые сделают правила управляемыми и предотвратят проблему, показанную в примере.