我正在寻找一个优雅(快速)的 python 函数,它可以从以下两个数组中生成每个组合。
cards = ["8H", "8S", "8C", "8D", "9H", "9S", "9C", "9D", "10H", "10S", "10C", "10D", "AH", "AS", "AC", "AD"]
players = ["_1", "_1", "_1", "_2", "_2", "_2", "_3", "_3", "_3", "_4", "_4", "_4", "_To", "_To", "_To", "_Tc"]
组合如下:
[('8H', '_1'), ('8S', '_1'), ('8C', '_1'), ('8D', '_2'), ('9H', '_2'), ('9S', '_2'), ('9C', '_3'), ('9D', '_3'), ('10H', '_3'), ('10S', '_4'), ('10C', '_4'), ('10D', '_4'), ('AH', '_To'), ('AS', '_To'), ('AC', '_To'), ('AD', '_Tc')]
但!没有平等,我的意思是。
例子:
如果卡片是:
["a", "b", "c", "d"]
如果玩家是:
["1", "1", "2", "2"]
Result:
[1a, 1b, 2c, 2d]
[1a, 1c, 2b, 2d]
[1a, 1d, 2b, 2c]
[1b, 1c, 2a, 2d]
[1b, 1d, 2a, 2c]
[1c, 1d, 2a, 2b]
不例如:
[1a, 1b, 2d, 2c]
玩家 2 拥有 (c 和 d) 等于 (d 和 c)
我尝试过一个功能itertools
, like combinations
and permutations
但没有运气。由于状态空间爆炸,在拥有所有组合后拒绝等于并不是真正的选择。
我希望有人能找到解决方案,因为谷歌搜索这个特定问题失败了。