Bloomberg | Online | Deck of Cards Shuffling
Question Details
Problem: Deck of Cards Shuffling #### Description You are given a list containing multiple decks of cards, where each deck consists of 52 unique cards. The total number of cards, n, is...
Full Details
Problem: Deck of Cards Shuffling
Description
You are given a list containing multiple decks of cards, where each deck consists of 52 unique cards. The total number of cards, n, is guaranteed to be a multiple of 52. Each card is represented as a structure containing two fields: suit and rank. Write a function to shuffle all the cards together using a custom algorithm that mimics manual shuffling.
Constraints
- The total number of cards,
n, is guaranteed to be a multiple of 52, indicating that there are multiple decks. - Each card has a suit and a rank.
- Suits are one of "Hearts", "Diamonds", "Clubs", "Spades".
- Ranks are one of "A", "2", "3", ..., "10", "J", "Q", "K".
Function Signature
cpp
struct Card {
std::string suit;
std::string rank;
};
std::list<Card> shuffleAllDecks(const std::list<Card>& all_decks);
Input
The input all_decks is a std::list of Card structures containing one or more decks of cards. All the decks are combined into a single list for shuffling.
Output
Return a std::list<Card> where all the cards from the input have been shuffled together.
Example
Input:
cpp
std::list<Card> all_decks = {
{"Hearts", "A"}, {"Hearts", "2"}, {"Hearts", "3"}, ..., {"Spades", "K"},
{"Hearts", "A"}, {"Hearts", "2"}, {"Hearts", "3"}, ..., {"Spades", "K"}
};
Output
cpp
std::list<Card> shuffledDecks = shuffleAllDecks(all_decks);
//
**Example** output (shuffled order):
// [
// {"Diamonds", "J"}, {"Hearts", "3"}, {"Clubs", "A"}, ..., {"Hearts", "4"}
//]
Explanation
The function should simulate the shuffling of all cards combined by thoroughly mixing the cards from all decks together, mimicking the randomness of manual shuffling.
About This Question
This is a reported interview question from a bloomberg interview for a swe role reported in 2024.
It covers the following topics: Strings .