Как создать матрицу матрицы, которая содержит список всех возможных сценариев, в которых 18 карт могут быть распределены на 6 игроков в равной степени - PullRequest
0 голосов
/ 22 января 2019

Я ищу способ составить список всех возможных сценариев, в которых 18 карт можно раздать 6 игрокам. Затем я хочу просмотреть список и удалить все экземпляры, которые соответствуют определенным критериям.

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

Например, список из 18 карт выглядит примерно так

master_list =list (['w1','w2','w3',....,'l9'])

Я хочу вывод, подобный этому

 [[['player 1' 'w1' 'w2' 'l1']
  ['player 2' 'w3' 's1' 's2']
  ['player 3' 'l2' 'l3' 's3']
  ['player 4' 'l4' 's5' 's4']
  ['player 5' 'w4' 'l5' 'l6']
  ['player 6' 'w5' 'l7' 'l8']]

  [['player 1' 'w5' 'w2' 'l1']
  ['player 2' 'w4' 's1' 's2']
  ['player 3' 'l4' 'l3' 's3']
  ['player 4' 'l2' 's5' 's4']
  ['player 5' 'w3' 'l5' 'l6']
  ['player 6' 'w1' 'l7' 'l8']]

  ....
  .... all the possible scenarios

Это то, что я сделал до сих пор ..

импортировать все необходимые библиотеки

import itertools
import numpy as np
from itertools import combinations 
import operator as op
from functools import reduce


#master_list = list of all the cards
#new_master = list of all the cards left after i reveal my cards
#comb = all possible combinations based on new_master list
#pos_env_comb = all possible candidates for envelope

Возьмите данные от игрока 1, затем удалите эти карты из основного списка и создайте новый список мастеров

print("input your cards with spaces")
input_list = [str(x) for x in input().split()]
master_list = list(['w1','w2','w3','w4','w5','w6',....,'l8','l9'])
new_master = np.setdiff1d(master_list,input_list)
print(new_master)
pos_env_comb = list()

Создайте все возможные комбинации, которые могут идти в конверте

comb = list(combinations(new_master, 3)) 
print(len(comb))

# Print the obtained combinations 
for i in comb:
    w = 0
    s = 0
    l = 0
    c = 0
    for j in i:
        if(j[0][0] == 'w'):
            w = w + 1

        elif(j[0][0] == 's'):
            s = s + 1

        else:
            l = l + 1

        if(w == 1 and s == 1 and l == 1):
            pos_env_comb.append(i)

print(len(pos_env_comb))
...