如何将数字添加到 Wolfram mathematica 中的每个子集?
How do I add numbers to each subset in Wolfram mathematica?
-
wolfram-mathematica
-
mathematical-optimization
-
discrete-mathematics
-
mathematical-expressions
-
mathematica-8
假设我有一副 52 张牌。我现在从牌组中取出两张牌,假设是钻石 2 和钻石 4。我现在创建一个子集 {5},这意味着我打印我剩下的 50 张牌的每 5 张牌组合。
我现在如何将钻石 2 和 4 添加回每个子集,即每组 5 张牌组合?
更新使用资源函数PlayingCardGraphic
生成图形
转换为正确的格式有点混乱,如果以不同的方式生成排名会更容易。
newHands =
Subsets[deckPart, {5}] // Map[Join[#, cardsToRemove] & /* RandomSample];
hand = newHands // RandomChoice
(hand //
Map[StringSplit[#,
x : DigitCharacter .. | {"J", "Q", "K", "A"} :> x] &]) /. {v_,
s_} :> {If[MemberQ[{"J", "Q", "K", "A"}, v], v, ToExpression@v],
s} //
ResourceFunction["PlayingCardGraphic"][#, "CardSpreadAngle" -> .8] &
5张卡片子集的数量是
50!/(5! 45! = 2118760
计算需要约 2.8 秒,在我机器上的笔记本中显示需要约 10 秒。
suits = ToString /@ {\[SpadeSuit], \[HeartSuit], \[DiamondSuit], \[ClubSuit]}
ranks = CharacterRange["2", "9"]~Join~{"10", "J", "Q", "K", "A"}
deck = Outer[StringJoin, ranks, suits] // Flatten // RandomSample
cardsToRemove = {"2\[DiamondSuit]", "4\[DiamondSuit]"}
deckPart = deck // DeleteCases[Alternatives @@ cardsToRemove]
Subsets[deckPart, {5}] // Map[Join[#, cardsToRemove] & /* RandomSample]
wolfram-mathematica
mathematical-optimization
discrete-mathematics
mathematical-expressions
mathematica-8
假设我有一副 52 张牌。我现在从牌组中取出两张牌,假设是钻石 2 和钻石 4。我现在创建一个子集 {5},这意味着我打印我剩下的 50 张牌的每 5 张牌组合。
我现在如何将钻石 2 和 4 添加回每个子集,即每组 5 张牌组合?
更新使用资源函数PlayingCardGraphic
生成图形
转换为正确的格式有点混乱,如果以不同的方式生成排名会更容易。
newHands =
Subsets[deckPart, {5}] // Map[Join[#, cardsToRemove] & /* RandomSample];
hand = newHands // RandomChoice
(hand //
Map[StringSplit[#,
x : DigitCharacter .. | {"J", "Q", "K", "A"} :> x] &]) /. {v_,
s_} :> {If[MemberQ[{"J", "Q", "K", "A"}, v], v, ToExpression@v],
s} //
ResourceFunction["PlayingCardGraphic"][#, "CardSpreadAngle" -> .8] &
5张卡片子集的数量是
50!/(5! 45! = 2118760
计算需要约 2.8 秒,在我机器上的笔记本中显示需要约 10 秒。
suits = ToString /@ {\[SpadeSuit], \[HeartSuit], \[DiamondSuit], \[ClubSuit]}
ranks = CharacterRange["2", "9"]~Join~{"10", "J", "Q", "K", "A"}
deck = Outer[StringJoin, ranks, suits] // Flatten // RandomSample
cardsToRemove = {"2\[DiamondSuit]", "4\[DiamondSuit]"}
deckPart = deck // DeleteCases[Alternatives @@ cardsToRemove]
Subsets[deckPart, {5}] // Map[Join[#, cardsToRemove] & /* RandomSample]