Re[3]: Комбинации значений
От: koandrew Канада http://thingselectronic.blogspot.ca/
Дата: 19.12.12 19:56
Оценка:
Здравствуйте, Blazkowicz, Вы писали:

B>Здравствуйте, FoolS.Top, Вы писали:


FT>>Decision table?

B>За термин — спасибо. Но это сильно похоже на мой второй вариант. Не вижу как решается вопрос, когда некоторые условия сразу покрывают большой регион вариантов.

Дык можно сделать эту таблицу с указателями — тогда эти некоторые условия будут содержать указатель на один и тот же экземпляр данных...
... << RSDN@Home 1.2.0 alpha 5 rev. 1539>>
[КУ] оккупировала армия.
Re[4]: Комбинации значений
От: Blazkowicz Россия  
Дата: 20.12.12 07:13
Оценка:
Здравствуйте, koandrew, Вы писали:

FT>>>Decision table?

B>>За термин — спасибо. Но это сильно похоже на мой второй вариант. Не вижу как решается вопрос, когда некоторые условия сразу покрывают большой регион вариантов.
K>Дык можно сделать эту таблицу с указателями — тогда эти некоторые условия будут содержать указатель на один и тот же экземпляр данных...
Я имел ввиду что-то вроде wildcards. Т.е. у меня сейчас 6 параметров. Это только с бинарными будет 64 варианта. А у меня один параметр принимает 6 значений. Это уже 196 вариантов. Причем результатов всего штук 10, поэтому все 196 комбинаций описывать нет смысла. Нужно местами использовать wildcards.
Решилось это довольно простым методом, но на Java, правда кучу дополнительного кода пришлось написать


        RuleKey baseKey = new RuleKey(
                p1,
                p2,
                p3,
                enum1,
                enum2,
                p4);
        ArrayList<RuleKey> keys;
        keys = new ArrayList<uleKey>();
        keys.add(baseKey);

        for (Param param : Param.values()) {
            if(param.value(baseKey) == Wildcard){
                //Copy iterator for safe update of original list
                for (RuleKey key : new ArrayList<RuleKey>(keys)) {
                    keys.remove(key);
                    keys.addAll(param.applyWildcard(key));//Здесь параметр, перебирает все возможные варианты своего значения и создаёт копии baseKey, со всеми возможными вариантами вместо wildcard
                }
            }
        }
        for (RuleKey key : keys) {
            decisionMap.put(key, rule);
        }
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.