Есть ли лучший способ сделать это:
perms = product(range(1,7),range(1,7),range(1,7))
чтобы я мог выбрать, сколько диапазонов я использую?
Я хочу, чтобы это было эквивалентно этому, но масштабируемо.
def dice(num)
if num == 1:
perms = ((i,) for i in range(1,7))
elif num == 2:
perms = product(range(1,7),range(1,7))
elif num == 3:
perms = product(range(1,7),range(1,7),range(1,7))
#... and so on
но я знаю, что должен быть лучший способ.
Я использую это для подсчета результатов игры в кости.
Актуальный код
def dice(selection= lambda d: d[2]):
perms = itertools.product(range(1,7),range(1,7),range(1,7))
return collections.Counter(((selection(sorted(i)) for i in perms)))
, где я могу вызвать его с помощью различных селекторов, например sum(d[0:2])
для суммы младших 2 костей или d[1]
для получения средних костей.