2016-07-10 3 views
2

Я работаю над написанием имитации покера. У меня уже есть готовые части. Но я застрял, сравнивая свою руку с карточками на столе. Моя идея состояла в том, чтобы получить мои 2 карты и взять 3 случайные карты из колоды и посмотреть, делает ли это флеш или что-то в этом роде. Но, конечно, мне нужно пройтись так, чтобы я взял все комбинации с моей рукой и колодой.Цикл через комбинации из 3 из 5

Если это 5 карт из колоды, а 1 представляет собой позиции карт, которые я возьму и сравню. Это все комбинации, которые мне приходится сравнивать с моими колодами.

00111 
01011 
01101 
01110 
10011 
10101 
10110 
11001 
11010 
11100 

Как я мог бы пройти через это? Табличные карты - это всего лишь массив объектов.

+2

Карты только из '0' и '1'? Это не похоже на покер. – Psidom

+0

Нет, 0 или 1 - это визуально сказать, каковы позиции карт, на которые я сравню. – Sharpless512

+0

Итак, вам нужны все комбинации 3 из 5 позиций? – Psidom

ответ

4

так, как вы расположили выход запутанным, но так как вы хотите, чтобы выбрать 3 карты из набора из 5 карт, вам нужно 5C3. Вы можете достичь этого, используя itertools.combinations.

От doc на: -

itertools.combinations (итерацию, г):

Возврат г длина подпоследовательности элементов от входа итерацию.

Комбинации испускаются в лексикографическом порядке сортировки. Таким образом, если отсортировано отсортированное количество входных данных , комбинация кортежей будет произведена в отсортированном порядке.

Элементы считаются уникальными в зависимости от их положения, а не от их значения . Поэтому, если входные элементы уникальны, в каждой комбинации не будет повторяться значений .

импорт itertools

a = [0,1,2,3,4] 

print [p for p in itertools.combinations(a, 3)] 

Выход:

[(0, 1, 2), (0, 1, 3), (0, 1, 4), (0, 2, 3), (0, 2, 4), (0, 3, 4),(1,2, 3), (1, 2, 4), (1, 3, 4), (2, 3, 4)]

3

Возможно попробовать combinations из itertools:

[c for c in itertools.combinations(range(5), 3)] 

[(0, 1, 2), 
(0, 1, 3), 
(0, 1, 4), 
(0, 2, 3), 
(0, 2, 4), 
(0, 3, 4), 
(1, 2, 3), 
(1, 2, 4), 
(1, 3, 4), 
(2, 3, 4)] 
Смежные вопросы