• Log InLog In
  • Register
Liquid`
Team Liquid Liquipedia
EDT 04:41
CEST 10:41
KST 17:41
  • Home
  • Forum
  • Calendar
  • Streams
  • Liquipedia
  • Features
  • Store
  • EPT
  • TL+
  • StarCraft 2
  • Brood War
  • Smash
  • Heroes
  • Counter-Strike
  • Overwatch
  • Liquibet
  • Fantasy StarCraft
  • TLPD
  • StarCraft 2
  • Brood War
  • Blogs
Forum Sidebar
Events/Features
News
Featured News
BGE Stara Zagora 2025: Info & Preview18Code S RO12 Preview: GuMiho, Bunny, SHIN, ByuN3The Memories We Share - Facing the Final(?) GSL46Code S RO12 Preview: Cure, Zoun, Solar, Creator4[ASL19] Finals Preview: Daunting Task30
Community News
GSL Ro4 and Finals moved to Sunday June 15th11Weekly Cups (May 27-June 1): ByuN goes back-to-back0EWC 2025 Regional Qualifier Results26Code S RO12 Results + RO8 Groups (2025 Season 2)3Weekly Cups (May 19-25): Hindsight is 20/20?0
StarCraft 2
General
BGE Stara Zagora 2025: Info & Preview Jim claims he and Firefly were involved in match-fixing Magnus Carlsen and Fabi review Clem's chess game. GSL Ro4 and Finals moved to Sunday June 15th Serious Question: Mech
Tourneys
Bellum Gens Elite: Stara Zagora 2025 $25,000+ WardiTV 2025 Series Sparkling Tuna Cup - Weekly Open Tournament SOOP Starcraft Global #21 $5,100+ SEL Season 2 Championship (SC: Evo)
Strategy
[G] Darkgrid Layout Simple Questions Simple Answers [G] PvT Cheese: 13 Gate Proxy Robo
Custom Maps
[UMS] Zillion Zerglings
External Content
Mutation # 476 Charnel House Mutation # 475 Hard Target Mutation # 474 Futile Resistance Mutation # 473 Cold is the Void
Brood War
General
BW General Discussion Will foreigners ever be able to challenge Koreans? FlaSh Witnesses SCV Pull Off the Impossible vs Shu BGH auto balance -> http://bghmmr.eu/ Battle.net is not working
Tourneys
[ASL19] Grand Finals [Megathread] Daily Proleagues Small VOD Thread 2.0 [BSL20] GosuLeague RO16 - Tue & Wed 20:00+CET
Strategy
I am doing this better than progamers do. [G] How to get started on ladder as a new Z player
Other Games
General Games
Nintendo Switch Thread Monster Hunter Wilds Stormgate/Frost Giant Megathread Path of Exile Mechabellum
Dota 2
Official 'what is Dota anymore' discussion
League of Legends
LiquidLegends to reintegrate into TL.net
Heroes of the Storm
Simple Questions, Simple Answers
Hearthstone
Heroes of StarCraft mini-set
TL Mafia
Vanilla Mini Mafia TL Mafia Community Thread TL Mafia Plays: Diplomacy TL Mafia: Generative Agents Showdown Survivor II: The Amazon
Community
General
Russo-Ukrainian War Thread US Politics Mega-thread Things Aren’t Peaceful in Palestine Vape Nation Thread European Politico-economics QA Mega-thread
Fan Clubs
Maru Fan Club Serral Fan Club
Media & Entertainment
Korean Music Discussion [Manga] One Piece
Sports
2024 - 2025 Football Thread Formula 1 Discussion NHL Playoffs 2024
World Cup 2022
Tech Support
Computer Build, Upgrade & Buying Resource Thread Cleaning My Mechanical Keyboard
TL Community
The Automated Ban List
Blogs
Heero Yuy & the Tax…
KrillinFromwales
Research study on team perfo…
TrAiDoS
I was completely wrong ab…
jameswatts
Need Your Help/Advice
Glider
Trip to the Zoo
micronesia
Poker
Nebuchad
Info SLEgma_12
SLEgma_12
Customize Sidebar...

Website Feedback

Closed Threads



Active: 17691 users

Logic/Programming Interview Questions

Blogs > Oracle
Post a Reply
1 2 3 Next All
Oracle
Profile Blog Joined May 2007
Canada411 Posts
Last Edited: 2011-06-26 19:53:15
June 24 2011 21:43 GMT
#1
So we all know all the big names ask hard questions on interviews so I've made it a hobby to look for the challenging ones and time myself solving them.

Most of the ones on the internet are fairly well known so I'm not going to bother posting any of those. In fact, I'll post precisely those which I found the most challenging, and feel free to share yours.

After each question I will attempt to provide an origination for the question. (I have not interviewed at all these companies, but friends have)

In order of increasing difficulty,

1) Implement an integer Median Priority queue. That is, Peek has O(1) and Insert/Delete Median has O(logn). (Data structures course).

+ Show Spoiler [Hint] +
Too easy for a hint


+ Show Spoiler [Solved] +
http://www.teamliquid.net/blogs/viewblog.php?topic_id=237090&currentpage=2#26


2) Suppose there is a street-race, with a total of k contestants. You start at intersection A, and finish at intersection C. For safety, you want to plan this so that no two contestants can possibly be on the same road together. (Their routes are unique) There are exactly k unique routes from A to B (by unique I mean no roads in any two routes are the same) and exactly k unique routes from B to C. Describe a method to find k unique A-C routes. (Graph theory course)

+ Show Spoiler [Hint] +
Observe that this scenario can be modeled as a undirected unweighted graph, with intersections being vertices, and roads being edges. You want to k pairwise edge-disjoint paths from A to C. Transitivity of Mengers (edge) theorem


3) In OOP, how would you create/modify a class such that it can ONLY be allocated on the heap. That is, allocation onto the stack will error or fail. (Bloomberg)

+ Show Spoiler [Hint] +
No hint or else this would be too easy


+ Show Spoiler [Solved] +
http://www.teamliquid.net/blogs/viewblog.php?topic_id=237090#11


4) Given an array of size n, implement a function which will find the kth largest element in O(n) time and O(1) space. Be careful to note that elements are not necessarily integers, but have the standard comparison operators (ie <=, <) defined, all of which are transitive. (Data structures course)

+ Show Spoiler [Hint] +
Related to median priority queue


5) Given an integer array of size 2n+1 (odd length), where every element exists in pairs except for one unique element, find the unique element in O(n) time and O(1) space. (Google)

+ Show Spoiler [Hint] +
Associativity, Commutativity


+ Show Spoiler [Solved] +
http://www.teamliquid.net/blogs/viewblog.php?topic_id=237090&currentpage=2#22


6) Find the start of a cycle in a C++ linked list in O( n ) where n is the number of nodes, and space complexity O(1). Elements in the array are not necessarily distinct, so searching for the first recurrence of an element does not work. You do not know n. (IBM)

Example of a cycle in a linked list

+ Show Spoiler [Hint] +
Pointers. Make sure your understanding of them is most up-to-date with recent gcc C++ compilers. More specifically, 0xabf points to the same place as 0xabc.


+ Show Spoiler [Additional Hint] +
We know we can use two pointers, lets label them A and B. A simple algorithm which, in every iteration, increments A = A->Next and B=B->Next->Next (with NULL checkers) will eventually yield A=B if there is a loop or B=NULL if there is no loop. This algorithm is trivial, also known as "The turtle and the hare algorithm." Now, try to do this using only ONE pointer


7) Given a standard 52 card deck, you pull out 4 arbitrary cards. Now, you pull out the next card and memorize it before putting it back in the deck. Describe a method to arrange the first four cards in any order on a table so that someone who knows your system will be able to identify the 5th card you pulled. There is only enough space on the table to arrange the cards vertically, side by side. All four cards must be at the table and cannot be re-ordered once set.

Clarification: You may flip cards upside down, but note that the observer will not be able to see what the upside down cards are.

+ Show Spoiler [Hint] +
In mathematical terms, you are to find an onto mapping M: A -> B where A is {a, b, c, d} (the first four cards you pulled) to B = {all 52 cards} \ A. So |B| = 48. Note that rearranging the cards in any order only leaves 4! = 24 permutations. So M may not be one-to-one.


+ Show Spoiler [Solved] +
http://www.teamliquid.net/forum/viewpost.php?post_id=9964122


Horuku
Profile Blog Joined August 2010
United States405 Posts
Last Edited: 2011-06-24 21:56:02
June 24 2011 21:48 GMT
#2
#1. Never heard of a MEDIAN priority-queue and don't feel like googling the difference between it and a regular priority queue. Otherwise, like you said this is also a relatively easy question. The difficulty could be increased based on the underlying data-structure used for the queue (dynamic array, heap, etc.) Then it just comes down to arranging the data-structure each time an element is inserted based on its priority classification so the higher priority gets popped off first.

#2. This is probably a good one to study. CBA to do it at the moment.

#3. I imagine this is answered by saying have a watcher that triggers if data tries to be put on the stack? Not sure in what context it is being refered to, to be honest. Is it talking about the default operating system stack or a custom user built one in an OO language?

#4. This is way to easy for O(n). Just do a linear search comparing each element to each other and storing the current largest in a variable. A better question would be concerning binary search after you ask them what sort method they would use. And give a dataset size, because some sort methods are crappy for small data sets while others are obviously better.

#5. Again, O(n) is too easy. A linear search and you're good to go.

#6. Not sure about the cycle syntax, but based on the hint and how you should build a linked-list in C++ (where each node connects to another node through a pointer to that node), I'd image it is a simple memory search.

#7. CBA for this one either. I'd say in the interview though that I would google the trick to solving this and then implement that trick with an algorithm to do it :D
d<^^>b
Oracle
Profile Blog Joined May 2007
Canada411 Posts
Last Edited: 2011-06-24 22:03:31
June 24 2011 21:49 GMT
#3
#1 A median priority queue is a regular priority queue where priority is given to the median element.

#3 Sounds fine but what exactly is the watcher? Youre skipping the essence of the question.

#4 We want kth largest not max

#5 O(1) space so you cant store elements which have occured

#6 Not so simple actually. A cycle is simply whenever node->next points to an element which you have previously traversed.
jdseemoreglass
Profile Blog Joined July 2010
United States3773 Posts
June 24 2011 21:57 GMT
#4
Hmm... I stopped reading at "Transitivity of Mengers (edge) theorem."

It depresses me to read things like this because I plan on learning programming and suddenly I realize how much of my life I have to spend learning this shit just to be on par with an average programmer.

Meh. Maybe I should just figure out a way to take stupid people's money and get rich. Like offering people enlightenment and then charging them for copy-pasted sections of the Tao Te Ching.
"If you want this forum to be full of half-baked philosophy discussions between pompous faggots like yourself forever, stay the course captain vanilla" - FakeSteve[TPR], 2006
Horuku
Profile Blog Joined August 2010
United States405 Posts
June 24 2011 21:57 GMT
#5
On June 25 2011 06:49 Oracle wrote:
Show nested quote +
On June 25 2011 06:48 Horuku wrote:
#4 is way to easy for O(n). Just do a linear search comparing each element to each other and storing the current largest in a variable. A better question would be concerning binary search after you ask them what sort method they would use. And give a dataset size, because some sort methods are crappy for small data sets while others are obviously better.


Sorry, youre right, i forgot to add that you have O( 1 ) space complexity.
but also, your solution finds the largest, not the kth largest.


Well still, for kth largest then you would just sort the array and then choose the element [k-1] lol
d<^^>b
Oracle
Profile Blog Joined May 2007
Canada411 Posts
June 24 2011 22:02 GMT
#6
On June 25 2011 06:57 Horuku wrote:
Show nested quote +
On June 25 2011 06:49 Oracle wrote:
On June 25 2011 06:48 Horuku wrote:
#4 is way to easy for O(n). Just do a linear search comparing each element to each other and storing the current largest in a variable. A better question would be concerning binary search after you ask them what sort method they would use. And give a dataset size, because some sort methods are crappy for small data sets while others are obviously better.


Sorry, youre right, i forgot to add that you have O( 1 ) space complexity.
but also, your solution finds the largest, not the kth largest.


Well still, for kth largest then you would just sort the array and then choose the element [k-1] lol


Comparison based sort is lower bound nlogn
Radix/Counting sort are O(k) where k is the largest element in the array. But those work for integers (or some equivalent hashing function). Still if k > n then this doesn't work. In this problem you are not allowed to assume n <= k.
Siniyas
Profile Joined January 2011
Germany66 Posts
Last Edited: 2011-06-24 22:38:10
June 24 2011 22:35 GMT
#7
For the cycle

If the list is n elements long, isnt the n+1 element always the start of the cycle?


For the cards thing.
We could just have an order for the cards,that card a is bigger than b
depending on the value ex. K>Q and also for the suits if cards are double.
We start with cards 1>2>3>4, for the first highest remaining card in the deck.
then change 3 and 4 then go 1 further and change 2 and 4, 3 and 4 and then 3 and 4 again and so on and so on.
Also if we can leave an empty space we get enough permutations, so that we can distinctly map each element.


for 4

We can just copy the array and run through it k times, picking out the biggest element and deleting it from the array.


For 2.

I dont see the difficulty here. First route from A to B goes with first route from B to C or any other as long as we dont use the chosen routes after that.


Let it rip
Oracle
Profile Blog Joined May 2007
Canada411 Posts
Last Edited: 2011-06-24 22:55:26
June 24 2011 22:46 GMT
#8
On June 25 2011 07:35 Siniyas wrote:
For the cycle

If the list is n elements long, isnt the n+1 element always the start of the cycle?


For the cards thing.
We could just have an order for the cards,that card a is bigger than b
depending on the value ex. K>Q and also for the suits if cards are double.
We start with cards 1>2>3>4, for the first highest remaining card in the deck.
then change 3 and 4 then go 1 further and change 2 and 4, 3 and 4 and then 3 and 4 again and so on and so on.
Also if we can leave an empty space we get enough permutations, so that we can distinctly map each element.


for 4

We can just copy the array and run through it k times, picking out the biggest element and deleting it from the array.


For 2.

I dont see the difficulty here. First route from A to B goes with first route from B to C or any other as long as we dont use the chosen routes after that.





Clarification for the cycle, it doesnt have to loop back to the beginning. The cycle can contain only a subset of the elements. So the first portion doesnt have to be contained in the cycle.

And you do not know the value of 'n', sorry i should have explicitly said that.

#7 You cant re-order the cards multiple times. Pick a configuration, set it on the table, and someone should know which card you are mapping to. Empty spaces aren't allowed, sorry forgot to mention. You must use all 4 cards.

#4 That is O(kn) and not O(n)

#2 What if the routes from B to C are not pairwise edge disjoint from the A to B paths? That is, routes frmo B to C intersect some roads which are part of routes from A to B.
Siniyas
Profile Joined January 2011
Germany66 Posts
June 24 2011 23:01 GMT
#9
On June 25 2011 07:46 Oracle wrote:
Show nested quote +
On June 25 2011 07:35 Siniyas wrote:
For the cycle

If the list is n elements long, isnt the n+1 element always the start of the cycle?


For the cards thing.
We could just have an order for the cards,that card a is bigger than b
depending on the value ex. K>Q and also for the suits if cards are double.
We start with cards 1>2>3>4, for the first highest remaining card in the deck.
then change 3 and 4 then go 1 further and change 2 and 4, 3 and 4 and then 3 and 4 again and so on and so on.
Also if we can leave an empty space we get enough permutations, so that we can distinctly map each element.


for 4

We can just copy the array and run through it k times, picking out the biggest element and deleting it from the array.


For 2.

I dont see the difficulty here. First route from A to B goes with first route from B to C or any other as long as we dont use the chosen routes after that.





For the cycle, it doesnt have to loop back to the beginning. The cycle can contain only a subset of the elements. So the first portion doesnt have to be contained in the cycle.

#7 You cant re-order the cards multiple times. Pick a configuration, set it on the table, and someone should know which card you are mapping to.

#4 That is O(kn) and not O(n)

#2 What if the routes from B to C are not pairwise edge disjoint from the A to B paths? That is, routes frmo B to C intersect some roads which are part of routes from A to B.


It doesnt matter if the cycle loops back to the beginning or any other element.
But to loop back we need to have gone through all n elements of the list once.
Example.
A->B->C->D->B
4 elements 5 element is the start of the cycle.

7
Dont understand your point exactly. Do we need to to pick a fixed ordering for the 4 cards based on certain characteristics that never change?
Doesnt really make sense to me. If we cant change the order of the cards in accordance to the 5 card that we drew, than it would be totally random. Unless the scheme that the 4 cards are ordered buy have conditions in it that pertain to the 5 card. Is that what you mean?

4
Okay usually constants are not factored into O Notation, but if you want it exactly n or less, then i will think about it again.

2
If thats the case, is there even a garantuee that we can find k A to C paths that dont cross?

Let it rip
Oracle
Profile Blog Joined May 2007
Canada411 Posts
Last Edited: 2011-06-24 23:17:15
June 24 2011 23:07 GMT
#10
On June 25 2011 08:01 Siniyas wrote:
Show nested quote +
On June 25 2011 07:46 Oracle wrote:
On June 25 2011 07:35 Siniyas wrote:
For the cycle

If the list is n elements long, isnt the n+1 element always the start of the cycle?


For the cards thing.
We could just have an order for the cards,that card a is bigger than b
depending on the value ex. K>Q and also for the suits if cards are double.
We start with cards 1>2>3>4, for the first highest remaining card in the deck.
then change 3 and 4 then go 1 further and change 2 and 4, 3 and 4 and then 3 and 4 again and so on and so on.
Also if we can leave an empty space we get enough permutations, so that we can distinctly map each element.


for 4

We can just copy the array and run through it k times, picking out the biggest element and deleting it from the array.


For 2.

I dont see the difficulty here. First route from A to B goes with first route from B to C or any other as long as we dont use the chosen routes after that.





For the cycle, it doesnt have to loop back to the beginning. The cycle can contain only a subset of the elements. So the first portion doesnt have to be contained in the cycle.

#7 You cant re-order the cards multiple times. Pick a configuration, set it on the table, and someone should know which card you are mapping to.

#4 That is O(kn) and not O(n)

#2 What if the routes from B to C are not pairwise edge disjoint from the A to B paths? That is, routes frmo B to C intersect some roads which are part of routes from A to B.


It doesnt matter if the cycle loops back to the beginning or any other element.
But to loop back we need to have gone through all n elements of the list once.
Example.
A->B->C->D->B
4 elements 5 element is the start of the cycle.

7
Dont understand your point exactly. Do we need to to pick a fixed ordering for the 4 cards based on certain characteristics that never change?
Doesnt really make sense to me. If we cant change the order of the cards in accordance to the 5 card that we drew, than it would be totally random. Unless the scheme that the 4 cards are ordered buy have conditions in it that pertain to the 5 card. Is that what you mean?

4
Okay usually constants are not factored into O Notation, but if you want it exactly n or less, then i will think about it again.

2
If thats the case, is there even a garantuee that we can find k A to C paths that dont cross?



I misunderstood some of your points so I edited my explanation, see above.

#7 You can assign a "value" to each of the four cards you drew. (ie a=1, b=2, c=3, d=4) But your scheme doesn't work if we do not allow the empty space. (Its close though, i definitely tried that) The fifth card (and also first four) are completely arbitrary and unrelated.

#4 k is not a constant (it is in terms of n). k is chosen by the algorithm. Of course k<=n, but k changes based on what value we choose. For example, if we want k= n-1, then we have to do n*(n-1) loops! thats definitely not linear.

#2 There sure is (Q3)
HowitZer
Profile Joined February 2003
United States1610 Posts
June 24 2011 23:22 GMT
#11
3.)

class HeapOnly
{
private:
HeapOnly(){}

public:
static HeapOnly* Allocate() { return new HeapOnly(); }
};

int main()
{
HeapOnly p; // error

HeapOnly * p = HeapOnly::Allocate(); // ok

return 0;
}
Human teleportation, molecular decimation, breakdown and reformation is inherently purging. It makes a man acute.
Oracle
Profile Blog Joined May 2007
Canada411 Posts
June 24 2011 23:26 GMT
#12
On June 25 2011 08:22 HowitZer wrote:
3.)

class HeapOnly
{
private:
HeapOnly(){}

public:
static HeapOnly* Allocate() { return new HeapOnly(); }
};

int main()
{
HeapOnly p; // error

HeapOnly * p = HeapOnly::Allocate(); // ok

return 0;
}


That works. Of course there are many ways to implement it, but the gist is to make the constructor private (hence no stack allocation) and a public function (or friend to constructor or w.e) which returns a heap pointer.
Siniyas
Profile Joined January 2011
Germany66 Posts
Last Edited: 2011-06-24 23:30:45
June 24 2011 23:29 GMT
#13
Oh for 3. Only make a private constructor and have a static method that gives back a pointer to an object on the heap?

Edit: Meh. Just saw it was already posted.
Let it rip
Oracle
Profile Blog Joined May 2007
Canada411 Posts
June 24 2011 23:34 GMT
#14
Ive added an additional hint to Q6
aphorism
Profile Joined February 2011
United States226 Posts
Last Edited: 2011-06-24 23:50:13
June 24 2011 23:47 GMT
#15
On June 25 2011 06:43 Oracle wrote:
7) Given a standard 52 card deck, you pull out 4 arbitrary cards. Now, you pull out the next card and memorize it before putting it back in the deck. Describe a method to arrange the first four cards in any order on a table so that someone who knows your system will be able to identify the 5th card you pulled. There is only enough space on the table to arrange the cards vertically, side by side. All four cards must be at the table and cannot be re-ordered at any time.

+ Show Spoiler [Hint] +
In mathematical terms, you are to find an onto mapping M: A -> B where A is {a, b, c, d} (the first four cards you pulled) to B = {all 52 cards} \ A. So |B| = 48. Note that rearranging the cards in any order only leaves 4! = 24 permutations. So M may not be one-to-one.


So for this question, is our friend only allowed to observe the cards? I have ideas for an encoding that places cards face up/down, but I'm not sure if our observer is allowed to flip them face-up or not.
Oracle
Profile Blog Joined May 2007
Canada411 Posts
Last Edited: 2011-06-24 23:57:27
June 24 2011 23:54 GMT
#16
Yes the friend is only allowed to observe the cards. Face up/face down is fine, but note that your friend cannot know which card is which if there is more than one upside down card. So essentially, just think you can only label the face side with an 'a', 'b', 'c', or 'd'.

You're on the right track though. This isnt really an interview question, but a question a friend gave to me at lunch once. He said he didnt know the solution, and he heard it months back.

I encourage you to really think about it and then post, to ensure youre not missing any cases.
aphorism
Profile Joined February 2011
United States226 Posts
Last Edited: 2011-06-25 00:25:47
June 25 2011 00:24 GMT
#17
Here's a sketch of a solution to 7, I hope it works...

First, let's define an 'order' for cards of each color: Hearts < Diamonds < Spades < Clubs. This plus numerical order gives a mapping of cards of each color to the integers 1-26 by value, and it also gives us a strictly less-than operator for cards, so the lowest card can be called A, the next lowest can be called B, etc.

In your 4 cards, you will have either a majority color, or 2 red & 2 black cards. In this case, you will leave all cards face up, and use the 24 permutations of the face-up cards to correspond to 1-24, which correspond to the (at most 24) cards of the majority color (use red as the majority in the case of a 2/2 split). Our friend knows which cards in the majority color to leave out of the sorted list (because they're face-up on the table), so he can just map permutations (by lexicographic order or something) to the correct card.

For the remaining 24-26 cards, we turn some cards face-down (at most 2, so we never turn down a card in the minority color), and map the permutations of the face-up cards to cards in the minority color as follows (F = face-down card):

F A B C = 6 permutations of A, B, and C
A F B C = 6 more.
A B F C = 6 more
A B C F = 6 more
F F A B = 2 more, for 26 total permutations.

We turn at most 2 face-down, so we always leave our minority color cards face-up, and again our friend knows which ones to leave out of the sorted list.

Here's an example, because it's kinda sketchy just explaining it...


Let's say I pull the following 4 cards:
Ace of Hearts
Seven of Spades
Ten of Spades
Six of Diamonds.

In order, they are
Ace of Hearts = A
Six of Diamonds = B
Seven of Spades = C
Ten of Spades = D

Let's say the 5th card is the King of Spades.

It's in our minority color, and it's the 11th card out of 24, because we don't count the seven/ten of spades.

We thus give it the following mapping, where F is D, face-down.:
C F A B.

Our friend sees the 11th permutation for the minority color, and also sees the seven/ten of spades, so he knows to skip those. The 11th smallest black card, not counting the seven/ten of spades, is the King of Spades.


Let's say the fifth card is the Ace of Diamonds instead. Not counting the 4 cards we have on the table, it's the 13th smallest red card. We thus put down the 13th red permutation, CABD (all face up). Our friend sees the 13th permutation, and all cards face up, so he counts up to the 13th smallest red card, skipping the Ace of Hearts, because it's already on the table. This gives the Ace of Diamonds.


That post was far longer than I expected it would be, so much for a solution sketch...
Anyway, feel free to point out any terrible flaws in my system, I think works okay.
Oracle
Profile Blog Joined May 2007
Canada411 Posts
June 25 2011 00:32 GMT
#18
I didnt read the example, and as soon as you mentioned "majority element" I knew what was going to come next. Looks right, and its completely different from my solution.

Here's mine:

We think of a card as a {0,1}-bit. A card represents 0 if it is face up and 1 if it is face-down.

So then we get a binary string of length four. So we can represent 2^4 - 1 = 15 possibly values with a string of 4 bits. But there are really only 13 distinct values. Hence we will never get the string 1111. So we will always have a face-up card.

So we assign 'a' = Hearts, 'b' = Diamonds, 'c' = Spades, 'd' = Clubs. The card which is face-up and leftmost denotes the suit.


So for example A F F F can be read as 0111 = 7. The A says its the 7 of Hearts.
FBDF can be read as 1001 = 9. The B says its the 9 of Diamonds.
ptell
Profile Joined October 2009
United States103 Posts
June 25 2011 00:33 GMT
#19
Solution to 7) :

First note that every card can be mapped to a number in the range of 1 to 52. Using the convention in bridge, the map is (from smallest to highest):

01 <--> Ace of Spades
02 <--> Ace of Hearts
03 <--> Ace of Diamonds
04 <--> Ace of Clubs
05 <--> Deuce of Spades
.
.
.
51 <--> King of Diamonds
52 <--> King of Clubs

Then the first four cards corresponds to a set of four number, e.g. {04, 13, 17, 31}. Then reindex the remaining 48 cards so that it starts from 01 and ends at 48.

Now there are 4! = 24 ways to arrange four distinct cards so we can map to indices 01 to 24. Next to represent the indices 25 to 48, flip the card with the smallest value.
Oracle
Profile Blog Joined May 2007
Canada411 Posts
June 25 2011 00:45 GMT
#20
On June 25 2011 09:33 ptell wrote:
Solution to 7) :

First note that every card can be mapped to a number in the range of 1 to 52. Using the convention in bridge, the map is (from smallest to highest):

01 <--> Ace of Spades
02 <--> Ace of Hearts
03 <--> Ace of Diamonds
04 <--> Ace of Clubs
05 <--> Deuce of Spades
.
.
.
51 <--> King of Diamonds
52 <--> King of Clubs

Then the first four cards corresponds to a set of four number, e.g. {04, 13, 17, 31}. Then reindex the remaining 48 cards so that it starts from 01 and ends at 48.

Now there are 4! = 24 ways to arrange four distinct cards so we can map to indices 01 to 24. Next to represent the indices 25 to 48, flip the card with the smallest value.

Yup, can't find a problem with it. I came across this solution too but didn't like it because most likely the observer would need a coding grammar to lookup which permutation refers to which.
1 2 3 Next All
Please log in or register to reply.
Live Events Refresh
Next event in 1h 19m
[ Submit Event ]
Live Streams
Refresh
StarCraft: Brood War
Sea 970
Pusan 618
Nal_rA 517
EffOrt 179
NaDa 130
JulyZerg 66
GoRush 54
Leta 43
ToSsGirL 38
sSak 25
[ Show more ]
Movie 25
Barracks 22
Sharp 20
yabsab 20
Sacsri 11
Light 11
Noble 9
ajuk12(nOOB) 7
ivOry 5
Bale 3
Dota 2
BananaSlamJamma391
XcaliburYe304
Fuzer 197
League of Legends
JimRising 545
Counter-Strike
shoxiejesuss727
ceh9539
Other Games
Happy355
crisheroes254
Mew2King232
XaKoH 36
NotJumperer8
Has6
Organizations
Dota 2
PGL Dota 2 - Main Stream2607
Other Games
gamesdonequick982
StarCraft 2
Blizzard YouTube
StarCraft: Brood War
BSLTrovo
sctven
[ Show 13 non-featured ]
StarCraft 2
• LUISG 29
• AfreecaTV YouTube
• intothetv
• Kozan
• IndyKCrew
• LaughNgamezSOOP
• Migwel
• sooper7s
StarCraft: Brood War
• iopq 1
• BSLYoutube
• STPLYoutube
• ZZZeroYoutube
League of Legends
• HappyZerGling99
Upcoming Events
The PondCast
1h 19m
Bellum Gens Elite
1h 19m
WardiTV Invitational
2h 19m
Replay Cast
15h 19m
OSC
15h 19m
Bellum Gens Elite
1d 2h
WardiTV Invitational
1d 5h
BSL 2v2 ProLeague
1d 10h
Replay Cast
1d 15h
CranKy Ducklings
2 days
[ Show More ]
SC Evo League
2 days
Bellum Gens Elite
2 days
Fire Grow Cup
2 days
CSO Contender
2 days
BSL: ProLeague
2 days
StRyKeR vs MadiNho
Cross vs UltrA
TT1 vs JDConan
Bonyth vs Sziky
Replay Cast
2 days
SOOP Global
2 days
Creator vs Rogue
Cure vs Classic
SOOP
3 days
SHIN vs GuMiho
Sparkling Tuna Cup
3 days
AllThingsProtoss
3 days
Fire Grow Cup
3 days
BSL: ProLeague
3 days
HBO vs Doodle
spx vs Tech
DragOn vs Hawk
Dewalt vs TerrOr
Replay Cast
3 days
Replay Cast
4 days
Replay Cast
5 days
WardiTV Invitational
5 days
GSL Code S
6 days
Rogue vs GuMiho
Maru vs Solar
Replay Cast
6 days
Liquipedia Results

Completed

CSL Season 17: Qualifier 1
DreamHack Dallas 2025
Heroes 10 EU

Ongoing

JPL Season 2
BSL 2v2 Season 3
BSL Season 20
KCM Race Survival 2025 Season 2
NPSL S3
Rose Open S1
CSL Season 17: Qualifier 2
2025 GSL S2
Bellum Gens Elite Stara Zagora 2025
BLAST.tv Austin Major 2025
ESL Impact League Season 7
IEM Dallas 2025
PGL Astana 2025
Asian Champions League '25
ECL Season 49: Europe
BLAST Rivals Spring 2025
MESA Nomadic Masters
CCT Season 2 Global Finals
IEM Melbourne 2025
YaLLa Compass Qatar 2025
PGL Bucharest 2025
BLAST Open Spring 2025

Upcoming

CSL 17: 2025 SUMMER
Copa Latinoamericana 4
CSLPRO Last Chance 2025
CSLAN 2025
K-Championship
SEL Season 2 Championship
Esports World Cup 2025
HSC XXVII
Championship of Russia 2025
Murky Cup #2
NC Random Cup
BLAST Bounty Fall 2025
BLAST Bounty Fall Qual
IEM Cologne 2025
FISSURE Playground #1
TLPD

1. ByuN
2. TY
3. Dark
4. Solar
5. Stats
6. Nerchio
7. sOs
8. soO
9. INnoVation
10. Elazer
1. Rain
2. Flash
3. EffOrt
4. Last
5. Bisu
6. Soulkey
7. Mini
8. Sharp
Sidebar Settings...

Advertising | Privacy Policy | Terms Of Use | Contact Us

Original banner artwork: Jim Warren
The contents of this webpage are copyright © 2025 TLnet. All Rights Reserved.