Омаха покер для петель через два списка. Как получить все возможные комбинации? - PullRequest
0 голосов
/ 25 марта 2020

Я создаю игру в Омаху (должна работать на 4-карточную и 5-карточную Омаху) в Python. У меня есть два списка. playerCardList - это список объектов Card, который содержит карты, которые были розданы игроку. Этот список содержит 4 или 5 Card объектов. communityCardList содержит общие карты (Card объекты). Этот список содержит 5 карточных объектов. Я написал все функции, чтобы проверить, есть ли у игрока королевский грипп sh, прямой грипп sh et c. Этим функциям необходим новый список Card в качестве параметра. Этот новый список должен быть комбинацией 2 Card объектов из playerCardList и 3 Cards из communityCardList. Я должен проверить все возможные комбинации этого. Я знаю, что это можно сделать с 2 for loops. Но я не знаю, как правильно сделать это в for loop, чтобы все возможные комбинации были проверены. Кроме того, как мне избежать повторных проверок комбинаций Card?

Ответы [ 2 ]

0 голосов
/ 25 марта 2020

Вы можете использовать itertools.combinations. Ему нужен список, и он возвращает другой список, который не является их дубликатами.

import itertools

print(*itertools.combinations([1,2,3], 2))

Вывод:

(1, 2) (1, 3) (2, 3)

Если вам нужно какое-то дублирующее, но перетасованное значение, вы также можете использовать itertools.permutations

import itertools

print(*itertools.permutations([1,2,3], 2))

Выход:

(1, 2) (1, 3) (2, 1) (2, 3) (3, 1) (3, 2) 
0 голосов
/ 25 марта 2020

Я бы использовал перестановку.

Дайте всем вашим картам номер и используйте библиотеку перестановок:

from itertools import permutations 

# Get all permutations of [1, 2, 3] and print them
perm = permutations([1, 2, 3])       
for i in list(perm): 
    print i 

output:

(1, 2, 3)
(1, 3, 2)
(2, 1, 3)
(2, 3, 1)
(3, 1, 2)
(3, 2, 1)

Я надеюсь, что это хорошее начало для вас, чтобы найти решение. Ура, будь здоров

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...