Задача по определению доступности действий, математика царица наук |
Здравствуйте, гость ( Вход | Регистрация )
Задача по определению доступности действий, математика царица наук |
kwisp |
14.5.2009, 11:22
Сообщение
#1
|
астарожна ынтжинэр Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: 23 |
Условие.
Объекты: Вызов - объект. Пара - объект агрегирующий в себе два вызова. Действие - стандартный Qt || унаследованный от него. У вызова есть свойство состояние(10 возможных значений) опредлено в перечисляемом типе, есть свойство связь(5 возможных значений) определено тоже в перечисляемомо типе. 2 вызова из одной пары группируют 4 значения перечисляемых типов - 2 состояния и 2 связи, назовем это групповое составное состояние пары. Существует 12 различных действий(определено в перечисляемом типе), т.е. у каждого действия есть тип. Действия могут быть доступными и недоступными. Одновременно доступно из них могут быть до 8 действий, т.е к примеру наборы {3,5,7}, { 1, 6}, {5}. набор доступных действий определяется групповым составным состоянием пары. Вопрос. Как построить соответсвие меджу групповым составным состоянием пары и набором доступных действий? Прочее. Вопросом занимаюсь сравнительно долго. очевидно использование QAction QHash и QMultiHash, сериализации так же я сюда приплел использоание препроцессора т.к. if() и switch() естественно тут не помогают ниразу. Однако обрубили доступ к инету кроме рабочих сайтов(в кои я этот и записал) и я не могу естественно по памяти вспомнить из курса ВМ формулы по комбинаторике и расчитать(как сейчас модно говорить тупо расчитать) колличество возможных групповых составных состояний пары, колличество наборов действий. Это бы очень помогло в формировании хэша или мультихэша. буду рад любому содействию. |
|
|
SABROG |
14.5.2009, 11:28
Сообщение
#2
|
Профессионал Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: 34 |
Т.е. пока задача сводится к тому, чтобы собрать все возможные варианты состояний? Как в переборе паролей брутфорсом?
|
|
|
kwisp |
14.5.2009, 13:47
Сообщение
#3
|
астарожна ынтжинэр Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: 23 |
SABROG,
я бы выразился так. 1. математически колличественно и качественно описать задачу. 2. практически выкинуть лишнее(ну это только я знаю что некторых состояний пары не может быть вовсе) 3. решить как реализовать это в коде на С++/Qt чтобы проводить минимум действий при изменнеии набора действий соответствующего состоянию пары и наоборот. |
|
|
kwisp |
24.5.2009, 17:55
Сообщение
#4
|
астарожна ынтжинэр Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: 23 |
остановился на таком решении.
для каждого состояния и для каждой связи определил QBitArray величиной в 12 , где номер бита соответствует действию. 0-запрещено 1-разрешено. определился запрещает ли связь или состояние вызова то или иное действие . когда нужно узнать какие действия разрешены применяю логческое И к 4 QBitArray и получаю результат в виде QBitArray. пробегаюсь по нему и узнаю где единички. способ удобен тем что при добавлении удалении состояния или связи, добалении удалении действия минимум изменений надо сделать... с помощью макросов вынес общую карту соответствий сосоятояние/связь - набо действий в отдельный файл чтоб не загромождать класс. вроде бы удобно работать. кому интересно или есть схожие задачи пишите. |
|
|
Текстовая версия | Сейчас: 30.11.2024, 21:56 |