Я ищу способ составить список всех возможных сценариев, в которых 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))