如何将数字添加到 Wolfram mathematica 中的每个子集?

How do I add numbers to each subset in Wolfram mathematica?

假设我有一副 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]