Four-Player Trick-Taking Card Game Simulation
Learn this problemProblem statement
Simulate a four-player trick-taking card game from a supplied shuffled deck order.
deckOrder contains all 52 card codes separated by one space. A card code is its rank followed by its suit. Ranks are 2 3 4 5 6 7 8 9 T J Q K A, from lowest to highest. Suits are C D H S, from lowest to highest.
Model the game with cards, a deck, and four players, then apply these rules:
- Deal cards from left to right in round-robin order to players
0, 1, 2, 3. Each player receives 13 cards. - Sort every hand by suit first and rank second, using the orders above.
- Player
0leads the first trick. For each turn, a player plays the first card in their sorted remaining hand that follows the leading suit. If they cannot follow suit, they play the first card in their remaining hand. - The highest-ranked card of the leading suit wins the trick. That player leads the next trick.
- Cards of rank
5,T, andKare worth5,10, and13points respectively; every other card is worth0. The trick winner receives all points in that trick.
After 13 tricks, return scores=[s0,s1,s2,s3];winners=[w0,w1,...]. List every player tied for the highest score in ascending player order.
Function
simulateTrickTakingGame(deckOrder: String) → StringExamples
Example 1
deckOrder = "2C 2D 2H 2S 3C 3D 3H 3S 4C 4D 4H 4S 5C 5D 5H 5S 6C 6D 6H 6S 7C 7D 7H 7S 8C 8D 8H 8S 9C 9D 9H 9S TC TD TH TS JC JD JH JS QC QD QH QS KC KD KH KS AC AD AH AS"return = "scores=[112,0,0,0];winners=[0]"Round-robin dealing gives player 0 every club. Player 0 leads clubs and wins every trick because the other players cannot follow clubs. All 112 available points go to player 0.
Example 2
deckOrder = "2C 3C 4C 5C 6C 7C 8C 9C TC JC QC KC AC 2D 3D 4D 5D 6D 7D 8D 9D TD JD QD KD AD 2H 3H 4H 5H 6H 7H 8H 9H TH JH QH KH AH 2S 3S 4S 5S 6S 7S 8S 9S TS JS QS KS AS"return = "scores=[5,18,18,71];winners=[3]"Dealing a suit-grouped deck distributes different ranks and suits among the players. Following the deterministic first-legal-card policy gives scores 5, 18, 18, 71, so player 3 wins.
Example 3
deckOrder = "JS KH AD 8C 7H 3S TS JC TD 2C 8S 4S 7C QH JH 3D 7S 3C 9C 6H 4C 5D AH 6C QD 8D JD KD 6D 4D 5C QC 5H TC 4H 3H 9H 5S KC TH 9S 8H QS AS 2S 2H KS 7D 6S 9D 2D AC"return = "scores=[20,0,46,46];winners=[2,3]"Players 2 and 3 each finish with 46 points, so both appear in the ascending winner list.
Constraints
deckOrdercontains exactly52card codes separated by single spaces.- Every combination of one rank from
23456789TJQKAand one suit fromCDHSappears exactly once. - The total score across all four players is always
112.