Мой вопрос больше относится к логике, чем к самому кодированию: я строю скрипт на python для имитации покерных рук и получения статистики из него.Мой код очень хорошо подходит для назначения и сравнения рук, и единственным узким местом для моего сценария является получение наилучшей комбинации карт для каждого игрока: симуляция для омахи - каждый игрок получает 4 карты, а на доске 5 карт.Каждый игрок должен использовать наилучшую комбинацию из 5 карт (2 с руки игрока и 3 с доски).
Проблема в том, что пока единственный способ, которым я могу думать об этом, - это сравнить каждую возможную руку сигрок может иметь, а затем сравнить с другими игроками.
Например, у игрока A есть карты A1A2A3A4, а на доске B1B2B3B4B5:
Сначала я сравниваю все возможные руки, которые игрок A может получить: [A1A2B1B2B3, A1A2B1B2B4, A1A2B1B2B5, ..., A3A4B3B4B5] и получите лучшую руку (это 60 комбинаций от каждого игрока).
Сделайте это для всех игроков, а затем проверьте, у кого есть рука победителя.
Мой вопрос: как вы думаете, есть ли способ получить лучшую руку каждого игрока, не проверяя все 60 комбинаций?
Мне потребовалось 16 часов, чтобы выполнить ~ 6,5 миллиардов итераций (~ 2,5 миллиона рук x60 комбинаций досок х 40 итераций на руку).
Не могли бы вы также оценить эффективность?Я не знаю, пытаюсь ли я сделать что-то невозможное, чтобы сделать это здесь = P
РЕДАКТИРОВАТЬ - РЕШЕНО
Спасибо за вклад, ребята.В конце концов я решил это с помощью битовых манипуляций:
https://codereview.stackexchange.com/questions/217597/forming-the-best-possible-poker-hand?noredirect=1#comment421020_217597