TopCoder problem "ThreeCardMonte" used in SRM 294 (Division II Level One)

Problem Statement


You come across an apparently respectable man on the street who makes you a seemingly legitimate proposition: the opportunity to play a game of Three Card Monte. He has a table with three face-up cards in a row: two jokers and one ace, with the ace in the middle. After you make a small wager, he turns the cards face-down and begins to manipulate the cards, swapping cards two at a time. After he completes the swaps, you are then to guess which card is the ace.

The series of card swaps will be given to you in order as a String swaps, containing only the characters 'L', 'R', 'E', and 'F'. swaps[0] indicates the first swap. The 4 characters indicate the following moves:

  • L: swap the left and middle cards
  • R: swap the right and middle cards
  • E: swap the cards on the ends (the left and right cards)
  • F: fake swap (no cards actually change position)

Write a method that returns the final position of the ace, after all the swaps have been performed. Your method should return "L" if the left card is the ace, "R" if the right card is the ace, and "M" if the ace is in the middle.



Method signature:String position(String swaps)
(be sure your method is public)


-swaps will contain beween 0 and 50 characters, inclusive.
-swaps will contain only the characters 'L', 'R', 'E', and 'F'.


Returns: "L"
Returns: "M"
The first swap moves the ace from the middle to the right side. The second swap moves the ace from the right side to the left side. The third swap moves the ace from the right side back to the middle.
Returns: "R"
Ignoring the two fake swaps, the middle and right cards are swapped three times. Therefore, the ace ends up on the right side.
Returns: "M"
No cards move -- the ace remains in the middle.
Returns: "L"

Problem url:

Problem stats url:




PabloGilberto , brett1479 , radeye , Olexiy

Problem categories: