You have 25 horses. When they race, each horse runs at a different, constant pace. A horse will always run at the same pace no matter how many times it races.
You want to figure out which are your 3 fastest horses. You are allowed to race at most 5 horses against each other at a time. You don't have a stopwatch so all you can learn from each race is which order the horses finish in.
What is the least number of races you can conduct to figure out which 3 horses are fastest?

You need to conduct 7 races.
First, separate the horses into 5 groups of 5 horses each, and race the horses in each of these groups. Let's call these groups A, B, C, D and E, and within each group let's label them in the order they finished. So for example, in group A, A1 finished 1st, A2 finished 2nd, A3 finished 3rd, and so on.
We can rule out the bottom two finishers in each race (A4 and A5, B4 and B5, C4 and C5, D4 and D5, and E4 and E5), since we know of at least 3 horses that are faster than them (specifically, the horses that beat them in their respective races).
This table shows our remaining horses:
A1 B1 C1 D1 E1
A2 B2 C2 D2 E2
A3 B3 C3 D3 E3
For our 6th race, let's race the top finishers in each group: A1, B1, C1, D1 and E1. Let's assume that the order of finishers is: A1, B1, C1, D1, E1 (so A1 finished first, E1 finished last).
We now know that horse D1 cannot be in the top 3, because it is slower than C1, B1 and A1 (it lost to them in the 6th race). Thus, D2 and D3 can also not be in the to 3 (since they are slower than D1).
Similarly, E1, E2 and E3 cannot be in the top 3 because they are all slower than D1 (which we already know isn't in the top 3).
Let's look at our updated table, having removed these horses that can't be in the top 3:
A1 B1 C1
A2 B2 C2
A3 B3 C3
We can actually rule out a few more horses. C2 and C3 cannot be in the top 3 because they are both slower than C1 (and thus are also slower than B1 and A1). And B3 also can't be in the top 3 because it is slower than B2 and B1 (and thus is also slower than A1). So let's further update our table:
A1 B1 C1
A2 B2
A3
We actually already know that A1 is our fastest horse (since it directly or indirectly beat all the remaining horses). So now we just need to find the other two fastest horses out of A2, A3, B1, B2 and C1. So for our 7th race, we simply race these 5 horses, and the top two finishers, plus A1, are our 3 fastest horses.

There are 5 pirates in a ship. Pirates have hierarchy C1, C2, C3, C4 and C5. C1 designation is the highest and C5 is the lowest.
These pirates have three characteristics:
a. Every pirate is so greedy that he can even take lives to make more money.
b. Every pirate desperately wants to stay alive.
c. They are all very intelligent.
There are total 100 gold coins on the ship. The person with the highest designation on the deck is expected to make the distribution. If the majority on the deck does not agree to the distribution proposed, the highest designation pirate will be thrown out of the ship (or simply killed). The first priority of the pirates is to stay alive and second to maximize the gold they get. Pirate 5 devises a plan which he knows will be accepted for sure and will maximize his gold. What is his plan?

To understand the answer,we need to reduce this problem to only 2 pirates. So what happens if there are only 2 pirates. Pirate 2 can easily propose that he gets all the 100 gold coins. Since he constitutes 50% of the pirates, the proposal has to be accepted leaving Pirate 1 with nothing.
Now let's look at 3 pirates situation, Pirate 3 knows that if his proposal does not get accepted, then pirate 2 will get all the gold and pirate 1 will get nothing. So he decides to bribe pirate 1 with one gold coin. Pirate 1 knows that one gold coin is better than nothing so he has to back pirate 3. Pirate 3 proposes {pirate 1, pirate 2, pirate 3} {1, 0, 99}. Since pirate 1 and 3 will vote for it, it will be accepted.
If there are 4 pirates, pirate 4 needs to get one more pirate to vote for his proposal. Pirate 4 realizes that if he dies, pirate 2 will get nothing (according to the proposal with 3 pirates) so he can easily bribe pirate 2 with one gold coin to get his vote. So the distribution will be {0, 1, 0, 99}.
Smart right?
Now can you figure out the distribution with 5 pirates? Let's see. Pirate 5 needs 2 votes and he knows that if he dies, pirate 1 and 3 will get nothing. He can easily bribe pirates 1 and 3 with one gold coin each to get their vote. In the end, he proposes {1, 0, 1, 0, 98}. This proposal will get accepted and provide the maximum amount of gold to pirate 5.

Two words are anagrams if and only if they contain the exact same letters with the exact same frequency (for example, "name" and "mean" are anagrams, but "red" and "deer" are not).
Given two strings S1 and S2, which each only contain the lowercase letters a through z, write a program to determine if S1 and S2 are anagrams. The program must have a running time of O(n + m), where n and m are the lengths of S1 and S2, respectively, and it must have O(1) (constant) space usage.

First create an array A of length 26, representing the counts of each letter of the alphabet, with each value initialized to 0. Iterate through each character in S1 and add 1 to the corresponding entry in A. Once this iteration is complete, A will contain the counts for the letters in S1. Then, iterate through each character in S2, and subtract 1 from each corresponding entry in A. Now, if the each entry in A is 0, then S1 and S2 are anagrams; otherwise, S1 and S2 aren't anagrams.
Here is pseudocode for the procedure that was described:
def areAnagrams(S1, S2)
A = new Array(26)
A.initializeValues(0)
for each character in S1
arrayIndex = mapCharacterToNumber(character) //maps "a" to 0, "b" to 1, "c" to 2, etc...
A[arrayIndex] += 1
end
for each character in S2
arrayIndex = mapCharacterToNumber(character)
A[arrayIndex] -= 1
end
for (i = 0; i < 26; i++)
if A[i] != 0
return false
end
end
return true
end

The Miller next took the company aside and showed them nine sacks of flour that were standing as depicted in the sketch.
"Now, hearken, all and some," said he, "while that I do set ye the riddle of the nine sacks of flour.
And mark ye, my lords and masters, that there be single sacks on the outside, pairs next unto them, and three together in the middle thereof.
By Saint Benedict, it doth so happen that if we do but multiply the pair, 28, by the single one, 7, the answer is 196, which is of a truth the number shown by the sacks in the middle.
Yet it be not true that the other pair, 34, when so multiplied by its neighbour, 5, will also make 196.
Wherefore I do beg you, gentle sirs, so to place anew the nine sacks with as little trouble as possible that each pair when thus multiplied by its single neighbour shall make the number in the middle."
As the Miller has stipulated in effect that as few bags as possible shall be moved, there is only one answer to this puzzle, which everybody should be able to solve.

The way to arrange the sacks of flour is as follows: 2, 78, 156, 39, 4. Here each pair when multiplied by its single neighbour makes the number in the middle, and only five of the sacks need be moved.
There are just three other ways in which they might have been arranged (4, 39, 156, 78, 2; or 3, 58, 174, 29, 6; or 6, 29, 174, 58, 3), but they all require the moving of seven sacks.

You are standing in a pitch-dark room. A friend walks up and hands you a normal deck of 52 cards. He tells you that 13 of the 52 cards are face-up, the rest are face-down. These face-up cards are distributed randomly throughout the deck.
Your task is to split up the deck into two piles, using all the cards, such that each pile has the same number of face-up cards. The room is pitch-dark, so you can't see the deck as you do this.
How can you accomplish this seemingly impossible task?

Take the first 13 cards off the top of the deck and flip them over. This is the first pile. The second pile is just the remaining 39 cards as they started.
This works because if there are N face-up cards in within the first 13 cards, then there will be (13 - N) face up cards in the remaining 39 cards. When you flip those first 13 cards, N of which are face-up, there will now be N cards face-down, and therefore (13 - N) cards face-up, which, as stated, is the same number of face-up cards in the second pile.

The owner of a banana plantation has a camel. He wants to transport his 3000 bananas to the market, which is located after the desert. The distance between his banana plantation and the market is about 1000 kilometer. So he decided to take his camel to carry the bananas. The camel can carry at the maximum of 1000 bananas at a time, and it eats one banana for every kilometer it travels.
What is the most bananas you can bring over to your destination?

First of all, the brute-force approach does not work. If the Camel starts by picking up the 1000 bananas and try to reach point B, then he will eat up all the 1000 bananas on the way and there will be no bananas left for him to return to point A.
So we have to take an approach that the Camel drops the bananas in between and then returns to point A to pick up bananas again.
Since there are 3000 bananas and the Camel can only carry 1000 bananas, he will have to make 3 trips to carry them all to any point in between.
When bananas are reduced to 2000 then the Camel can shift them to another point in 2 trips and when the number of bananas left are <= 1000, then he should not return and only move forward.
In the first part, P1, to shift the bananas by 1Km, the Camel will have to
Move forward with 1000 bananas – Will eat up 1 banana in the way forward
Leave 998 banana after 1 km and return with 1 banana – will eat up 1 banana in the way back
Pick up the next 1000 bananas and move forward – Will eat up 1 banana in the way forward
Leave 998 banana after 1 km and return with 1 banana – will eat up 1 banana in the way back
Will carry the last 1000 bananas from point a and move forward – will eat up 1 banana
Note: After point 5 the Camel does not need to return to point A again.
So to shift 3000 bananas by 1km, the Camel will eat up 5 bananas.
After moving to 200 km the Camel would have eaten up 1000 bananas and is now left with 2000 bananas.
Now in the Part P2, the Camel needs to do the following to shift the Bananas by 1km.
Move forward with 1000 bananas – Will eat up 1 banana in the way forward
Leave 998 banana after 1 km and return with 1 banana – will eat up this 1 banana in the way back
Pick up the next 1000 bananas and move forward – Will eat up 1 banana in the way forward
Note: After point 3 the Camel does not need to return to the starting point of P2.
So to shift 2000 bananas by 1km, the Camel will eat up 3 bananas.
After moving to 333 km the camel would have eaten up 1000 bananas and is now left with the last 1000 bananas.
The Camel will actually be able to cover 333.33 km, I have ignored the decimal part because it will not make a difference in this example.
Hence the length of part P2 is 333 Km.
Now, for the last part, P3, the Camel only has to move forward. He has already covered 533 (200+333) out of 1000 km in Parts P1 & P2. Now he has to cover only 467 km and he has 1000 bananas.
He will eat up 467 bananas on the way forward, and at point B the Camel will be left with only 533 Bananas.

You have a basket of infinite size (meaning it can hold an infinite number of objects). You also have an infinite number of balls, each with a different number on it, starting at 1 and going up (1, 2, 3, etc...).
A genie suddenly appears and proposes a game that will take exactly one minute. The game is as follows: The genie will start timing 1 minute on his stopwatch. Where there is 1/2 a minute remaining in the game, he'll put balls 1, 2, and 3 into the basket. At the exact same moment, you will grab a ball out of the basket (which could be one of the balls he just put in, or any ball that is already in the basket) and throw it away.
Then when 3/4 of the minute has passed, he'll put in balls 4, 5, and 6, and again, you'll take a ball out and throw it away.
Similarly, at 7/8 of a minute, he'll put in balls 7, 8, and 9, and you'll take out and throw away one ball.
Similarly, at 15/16 of a minute, he'll put in balls 10, 11, and 12, and you'll take out and throw away one ball.
And so on....After the minute is up, the genie will have put in an infinite number of balls, and you'll have thrown away an infinite number of balls.
Assume that you pull out a ball at the exact same time the genie puts in 3 balls, and that the amount of time this takes is infinitesimally small.
You are allowed to choose each ball that you pull out as the game progresses (for example, you could choose to always pull out the ball that is divisible by 3, which would be 3, then 6, then 9, and so on...).
You play the game, and after the minute is up, you note that there are an infinite number of balls in the basket.
The next day you tell your friend about the game you played with the genie. "That's weird," your friend says. "I played the exact same game with the genie yesterday, except that at the end of my game there were 0 balls left in the basket."
How is it possible that you could end up with these two different results?

Your strategy for choosing which ball to throw away could have been one of many. One such strategy that would leave an infinite number of balls in the basket at the end of the game is to always choose the ball that is divisible by 3 (so 3, then 6, then 9, and so on...). Thus, at the end of the game, any ball of the format 3n+1 (i.e. 1, 4, 7, etc...), or of the format 3n+2 (i.e. 2, 5, 8, etc...) would still be in the basket. Since there will be an infinite number of such balls that the genie has put in, there will be an infinite number of balls in the basket.
Your friend could have had a number of strategies for leaving 0 balls in the basket. Any strategy that guarantees that every ball n will be removed after an infinite number of removals will result in 0 balls in the basket.
One such strategy is to always choose the lowest-numbered ball in the basket. So first 1, then 2, then 3, and so on. This will result in an empty basket at the game's end. To see this, assume that there is some ball in the basket at the end of the game. This ball must have some number n. But we know this ball was thrown out after the n-th round of throwing balls away, so it couldn't be in there. This contradiction shows that there couldn't be any balls left in the basket at the end of the game.
An interesting aside is that your friend could have also used the strategy of choosing a ball at random to throw away, and this would have resulted in an empty basket at the end of the game. This is because after an infinite number of balls being thrown away, the probability of any given ball being thrown away reaches 100% when they are chosen at random.

You have been given the task of transporting 3,000 apples 1,000 miles from Appleland to Bananaville. Your truck can carry 1,000 apples at a time. Every time you travel a mile towards Bananaville you must pay a tax of 1 apple but you pay nothing when going in the other direction (towards Appleland). What is highest number of apples you can get to Bananaville?

833 apples.
Step one: First you want to make 3 trips of 1,000 apples 333 miles. You will be left with 2,001 apples and 667 miles to go.
Step two: Next you want to take 2 trips of 1,000 apples 500 miles. You will be left with 1,000 apples and 167 miles to go (you have to leave an apple behind).
Step three: Finally, you travel the last 167 miles with one load of 1,000 apples and are left with 833 apples in Bananaville.