Я думаю, что простые числа - хорошее решение для этого.
рассмотрим:
// D H S C
colors = [7,5,3,2]
// A Q K J T 9 8 7 6 5 4 3 2
ranks = [61,59,53,43,41,37,31,29,23,19,17,13,11,61]
уникальная карта идентифицируется простым цветным числом * ранговое простое число.
(например, по состоянию на бриллианты: простое число = 7 * 61)
Таким образом, каждая уникальная колода или комбинация идентифицируются как простое * простое * простое * простое * простое
в случае сброса алмазов идентификатор простых чисел колоды из 5 карт должен делиться (mod = 0) на идентификатор сброса алмазов (7 ^ 5, потому что простое число бриллиантов равно 7)