Я хочу моделировать покерные руки. Математическое обоснование и получение его в c ++ довольно безумно.
Стандартная колода из 52 карт позволяет вам составить 1326 комбинаций из двух карт. Однако можно разбить эти карты на 169 категорий, которые содержат изоморфные руки: пары (например, TT), масти (AsKs) и несовместимые (AcKd). Это подмножество обычного агностического покерного языка для описания набора покерных рук (TT +, 22-55, A9s + и т. Д.)
Что ж, моя проблема состоит в том, чтобы смоделировать гомоморфизм между 169 руками и 1326 руками через наследование. Imho идентификатор Hand1326, полученный из Hand169. Следовательно, классы выглядят как
struct Hand169 {
int rank1, rank2;
//private:
//bool suited;
};
struct Hand1326 : Hand169 {
int suit1, suit2;
};
Но теперь проблема в том, что Hand169 должен иметь информацию о пригодности (bool suit
), который был бы избыточен в Hand1326, потому что suit1
а также suit2
безоговорочно предлагает эту информацию. Информация о паре или нет подразумевается через корыто rank1
а также rank2
,
Есть ли лучший способ смоделировать это, без избыточности?
Задача ещё не решена.
Других решений пока нет …