crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Задача по определению доступности действий, математика царица наук
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. пробегаюсь по нему и узнаю где единички.

способ удобен тем что при добавлении удалении состояния или связи, добалении удалении действия минимум изменений надо сделать...
с помощью макросов вынес общую карту соответствий сосоятояние/связь - набо действий в отдельный файл чтоб не загромождать класс.
вроде бы удобно работать.

кому интересно или есть схожие задачи пишите.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 30.11.2024, 21:56