В попытке создать максимально быстрый анализатор для рук в Монте-Карло, штат Техас, с помощью C ++, я сейчас изучаю вопрос оценки рук.
Как многие из вас могут знать, существует довольно много ручных оценщиков с открытым исходным кодом. Подумав об этом, я остановился на «Оценщике двух плюс две руки» (названном так, поскольку он впервые был представлен на форуме два плюс два).
Это один из самых быстрых известных оценщиков, который использует поиск по массиву, чтобы быстро найти ценность раздачи.
Теперь для функции вам нужно передать массив с интересующими вас картами. Пример:
int Cards[] = { 3, 5, 10, 17, 23, 24, 32 };
int hv = HandValue(Cards);
Со значениями от 1 до 52. Теперь мой вопрос: каким картам соответствуют эти целые числа? Является ли 3 туз пик? Три червы? Я искал google, форум два + два, различные страницы, где представлены оценщики рук, исходный файл для построения массива. Все напрасно. Поэтому я надеюсь, что кто-то здесь может указать мне правильное направление, где я могу найти эту информацию, или дать мне ее прямо.
Источник, из которого взяты оценщики, является этой превосходной статьей: http://www.codingthewheel.com/archives/poker-hand-evaluator-roundup#cactus_kev
Что объясняет все оценщики индивидуально.
Я не проверял это, но это появляется быть:
"2c": 1,
"2d": 2,
"2h": 3,
"2s": 4,
"3c": 5,
"3d": 6,
...
"kh": 47,
"ks": 48,
"ac": 49,
"ad": 50,
"ah": 51,
"as": 52
ссылка: https://github.com/chenosaurus/poker-evaluator/blob/master/lib/PokerEvaluator.js
Других решений пока нет …