从列表的唯一排列中获取 n 个元素的子列表
Get sublist of n elements from unique permutations of a list
我正在编写代码来一起掷不同面数的骰子。 main 函数接受一个包含 2 个数字的列表,这些数字代表骰子的面数,例如[4, 6]
— 意味着程序将使用 d4
和 d6
.
来做事
这是问题所在:
我有一份要使用的所有不同类型骰子的列表 [4, 6, 8, 10, 12, 20]
,我需要一些代码来找出每组唯一的 2 个骰子,而不是在不同的地方传递相同的骰子顺序,例如:不要同时传递 [4, 6]
和 [6, 4]
.
我计划在未来扩展程序以一次掷 n
个骰子,例如5d4
和 2d20
所以不仅适用于 2 个骰子的代码将不胜感激。
最后,我希望能够掷出 2 个相同的骰子,例如:[4, 4]
。
如果问题需要更多解释,请告诉我。
使用 itertools
库中的 combinations_with_replacements
。
from itertools import combinations_with_replacement
dice = [4, 6, 8, 10, 12, 20]
N_dice = 2
print(list(combinations_with_replacement(dice, N_dice)))
给出输出
[(4, 4), (4, 6), (4, 8), (4, 10), (4, 12), (4, 20), (6, 6), (6, 8), (6, 10), (6, 12), (6, 20), (8, 8), (8, 10), (8, 12), (8, 20), (10, 10), (10, 12), (10, 20), (12, 12), (12, 20), (20, 20)]
d20
包就是这样做的。参见 https://pypi.org/project/d20/。
这是一个使用示例:
d20.roll("1d12+3d8+4d6+14").total
我正在编写代码来一起掷不同面数的骰子。 main 函数接受一个包含 2 个数字的列表,这些数字代表骰子的面数,例如[4, 6]
— 意味着程序将使用 d4
和 d6
.
这是问题所在:
我有一份要使用的所有不同类型骰子的列表 [4, 6, 8, 10, 12, 20]
,我需要一些代码来找出每组唯一的 2 个骰子,而不是在不同的地方传递相同的骰子顺序,例如:不要同时传递 [4, 6]
和 [6, 4]
.
我计划在未来扩展程序以一次掷 n
个骰子,例如5d4
和 2d20
所以不仅适用于 2 个骰子的代码将不胜感激。
最后,我希望能够掷出 2 个相同的骰子,例如:[4, 4]
。
如果问题需要更多解释,请告诉我。
使用 itertools
库中的 combinations_with_replacements
。
from itertools import combinations_with_replacement
dice = [4, 6, 8, 10, 12, 20]
N_dice = 2
print(list(combinations_with_replacement(dice, N_dice)))
给出输出
[(4, 4), (4, 6), (4, 8), (4, 10), (4, 12), (4, 20), (6, 6), (6, 8), (6, 10), (6, 12), (6, 20), (8, 8), (8, 10), (8, 12), (8, 20), (10, 10), (10, 12), (10, 20), (12, 12), (12, 20), (20, 20)]
d20
包就是这样做的。参见 https://pypi.org/project/d20/。
这是一个使用示例:
d20.roll("1d12+3d8+4d6+14").total