Four-Player Trick-Taking Card Game Simulation
Problem 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, and10points 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.
Interview Output Context
The reported exercise also asks to show each player and played card, every trick winner, and the points awarded in every trick before showing game totals and a highest-scoring player. For this practice adapter, the judged return value is the final score summary and all tied winners above. Be ready to extend the simulation with the original per-turn and per-trick trace; the played cards, trick winner, and trick points are already computed during each round.
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=[100,0,0,0];winners=[0]"Round-robin dealing gives player 0 every club. The other players cannot follow clubs, so player 0 wins every trick and receives all 100 fish points.
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,15,15,65];winners=[3]"The deterministic first-legal-card policy produces scores 5, 15, 15, 65. Player 3 has the highest score.
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,40,40];winners=[2,3]"Players 2 and 3 each receive 40 points. 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
100.