Medium logic riddles


The wish

Once upon a time, in the West Lake village, a servant lived with his master. After service of about 30 years, his master became ill and was going to die. One day, the master called his servant and asked him for a wish. It could be any wish but just one. The master gave him one day to think about it. The servant became very happy and went to his mother for discussion about the wish. His mother was blind and she asked her son for making a wish for her eye-sight to come back. Then the servant went to his wife. She became very excited and asked for a son as they were childless for many years. After that, the servant went to his father who wanted to be rich and so he asked his son to wish for a lot of money. The next day he went to his master and made one wish through which all the three (mother, father, wife) got what they wanted. You have to tell what the servant asked the master.
The servant said, "My mother wants to see her grandson swinging on a swing of gold."
93.70 %
40 votes


Flipping Lockers

There are 1 million closed school lockers in a row, labeled 1 through 1,000,000. You first go through and flip every locker open. Then you go through and flip every other locker (locker 2, 4, 6, etc...). When you're done, all the even-numbered lockers are closed. You then go through and flip every third locker (3, 6, 9, etc...). "Flipping" mean you open it if it's closed, and close it if it's open. For example, as you go through this time, you close locker 3 (because it was still open after the previous run through), but you open locker 6, since you had closed it in the previous run through. Then you go through and flip every fourth locker (4, 8, 12, etc...), then every fifth locker (5, 10, 15, etc...), then every sixth locker (6, 12, 18, etc...) and so on. At the end, you're going through and flipping every 999,998th locker (which is just locker 999,998), then every 999,999th locker (which is just locker 999,999), and finally, every 1,000,000th locker (which is just locker 1,000,000). At the end of this, is locker 1,000,000 open or closed?
Locker 1,000,000 will be open. If you think about it, the number of times that each locker is flipped is equal to the number of factors it has. For example, locker 12 has factors 1, 2, 3, 4, 6, and 12, and will thus be flipped 6 times (it will end be flipped when you flip every one, every 2nd, every 3rd, every 4th, every 6th, and every 12th locker). It will end up closed, since flipping an even number of times will return it to its starting position. You can see that if a locker number has an even number of factors, it will end up closed. If it has an odd number of factors, it will end up open. As it turns out, the only types of numbers that have an odd number of factors are squares. This is because factors come in pairs, and for squares, one of those pairs is the square root, which is duplicated and thus doesn't count twice as a factor. For example, 12's factors are 1 x 12, 2 x 6, and 3 x 4 (6 total factors). On the other hand, 16's factors are 1 x 16, 2 x 8, and 4 x 4 (5 total factors). So lockers 1, 4, 9, 16, 25, etc... will all be open. Since 1,000,000 is a square number (1000 x 1000), it will be open as well.
94.11 %
43 votes


The Devil Game

You die and the devil says he'll let you go to heaven if you beat him in a game. The devil sits you down at a perfectly round table. He gives himself and you an infinite pile of quarters. He says, "OK, we'll take turns putting one quarter down, no overlapping allowed, and the quarters must rest flat on the table surface. The first guy who can't put a quarter down loses." You guys are about to start playing, and the devil says that he'll go first. However, at this point you immediately interject, and ask if you can go first instead. You make this interjection because you are very smart and can place quarters perfectly, and you know that if you go first, you can guarantee victory. Explain how you can guarantee victory.
You place a quarter right in the center of the table. After that, whenever the devil places a quarter on the table, mimic his placement on the opposite side of the table.. If he has a place to place a quarter, so will you. The devil will run out of places to put a quarter before you do.
93.98 %
42 votes


The mystery of Cindy

The day before yesterday Cindy was 17. Next year she will be 20. How can this be?
The statement was made on January 1. Cindy's birthday is on December 31. She was 17 the day before yesterday (Dec 30). She was 18 yesterday. She will be 19 this year (Dec 31) and 20 next year.
91.22 %
48 votes


A woman with no driver license

A woman with no driver license goes the wrong way on a one-way street and turns left at a corner with a no left turn sign. A policeman sees her but does nothing... Why?
She is walking.
90.04 %
42 votes


The Monty Hall Problem

On the game show et´s Make a Deal, Monty Hall shows you three doors. Behind one of the doors is a new car, the other two hide goats. You choose one door, perhaps #1. Now Monty shows you what´s behind door #2 and it´s a goat.He gives you the chance to stay with original pick or select door #3. What do you do?
You should always abandon your original choice in favor of the remaining door (#3). When you make your first choice the chance of winning is 1 in 3 or 33%. When you switch doors, you turn a 2 in 3 chance of losing in the first round into a 2 in 3 chance of winning in the second round.
94.11 %
43 votes


The Circular Lake

A swan sits at the center of a perfectly circular lake. At an edge of the lake stands a ravenous monster waiting to devour the swan. The monster can not enter the water, but it will run around the circumference of the lake to try to catch the swan as soon as it reaches the shore. The monster moves at 4 times the speed of the swan, and it will always move in the direction along the shore that brings it closer to the swan the quickest. Both the swan and the the monster can change directions in an instant. The swan knows that if it can reach the lake's shore without the monster right on top of it, it can instantly escape into the surrounding forest. How can the swan succesfully escape?
Assume the radius of the lake is R feet. So the circumference of the lake is (2*pi*R). If the swan swims R/4 feet, (or, put another way, 0.25R feet) straight away from the center of the lake, and then begins swimming in a circle around the center, then it will be able to swim around this circle in the exact same amount of time as the monster will be able to run around the lake's shore (since this inner circle's circumference is 2*pi*(R/4), which is exactly 4 times shorter than the shore's circumference). From this point, the swan can move a millimeter inward toward the lake's center, and begin swimming around the center in a circle from this distance. It is now going around a very slightly smaller circle than it was a moment ago, and thus will be able to swim around this circle FASTER than the monster can run around the shore. The swan can keep swimming around this way, pulling further away each second, until finally it is on the opposite side of its inner circle from where the monster is on the shore. At this point, the swan aims directly toward the closest shore and begins swimming that way. At this point, the swan has to swim [0.75R feet + 1 millimeter] to get to shore. Meanwhile, the monster will have to run R*pi feet (half the circumference of the lake) to get to where the swan is headed. The monster runs four times as fast as the swan, but you can see that it has more than four times as far to run: [0.75R feet + 1 millimeter] * 4 < R*pi [This math could actually be incorrect if R were very very small, but in that case we could just say the swan swam inward even less than a millimeter, and make the math work out correctly.] Because the swan has less than a fourth of the distance to travel as the monster, it will reach the shore before the monster reaches where it is and successfully escape.
89.81 %
41 votes


Tiling Without Corners

You can easily "tile" an 8x8 chessboard with 32 2x1 tiles, meaning that you can place these 32 tiles on the board and cover every square. But if you take away two opposite corners from the chessboard, it becomes impossible to tile this new 62-square board. Can you explain why tiling this board isn't possible?
Color in the chessboard, alternating with red and blue tiles. Then color all of your tiles half red and half blue. Whenever you place a tile down, you can always make it so that the red part of the tile is on a red square and the blue part of the tile is on the blue square. Since you'll need to place 31 tiles on the board (to cover the 62 squares), you would have to be able to cover 31 red squares and 31 blue squares. But when you took away the two corners, you can see that you are taking away two red spaces, leaving 30 red squares and 32 blue squares. There is no way to cover 30 red squares and 32 blue squares with the 31 tiles, since these tiles can only cover 31 red squares and 31 blue squares, and thus, tiling this board is not possible.
90.26 %
43 votes


Anagram Checker

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
93.55 %
39 votes


Valuable object send by mail

Suppose you want to send in the mail a valuable object to a friend. You have a box which is big enough to hold the object. The box has a locking ring which is large enough to have a lock attached and you have several locks with keys. However, your friend does not have the key to any lock that you have. You cannot send the key in an unlocked box since it may be stolen or copied. How do you send the valuable object, locked, to your friend - so it may be opened by your friend?
Send the box with a lock attached and locked. Your friend attaches his or her own lock and sends the box back to you. You remove your lock and send it back to your friend. You remove your lock and send it back to your friend. Your friend may then remove the lock she or he put on and open the box.
90.26 %
43 votes

Page 1 of 4.