From: Ruby Quiz Date: 2007-04-06T21:55:37+09:00 Subject: [QUIZ] Getting to 100 (#119) The three rules of Ruby Quiz: 1. Please do not post any solutions or spoiler discussion for this quiz until 48 hours have passed from the time on this message. 2. Support Ruby Quiz by submitting ideas as often as you can: http://www.rubyquiz.com/ 3. Enjoy! Suggestion: A [QUIZ] in the subject of emails about the problem helps everyone on Ruby Talk follow the discussion. Please reply to the original quiz message, if you can. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= by Gavin Kistner The NPR show "Car Talk" has regular quizzes that they call "Puzzlers"[1]. The one listed on their web site for March 12th[2] is titled "Getting to 100". In the quiz, you are supposed to write down the digits 1-9 in order, followed by " = 100", and then insert between them two minus symbols and one plus symbol (in any order) to make the formula correct. You aren't allowed to re-arrange digits, or do some toothpick math like combine two minus signs to make a plus. You must use every digit, and all three operators. For example, here's one incorrect solution: 123 + 45 - 67 - 89 = 100 (This is an incorrect formula; it totals 12) The quiz, then, is to solve this problem without thinking, instead letting the computer think for you. Your program should output every possible equation that can be formed, and the actual result of that equation. The equation that results in 100 should have stars around it. At the end, you should print out the number of formulae that were possible. Here's an excerpt of some example output: ... 12 - 34 - 567 + 89 = -500 12 - 34 + 567 - 89 = 456 12 + 34 - 567 - 89 = -610 ************************ 123 - 45 - 67 + 89 = 100 ************************ 123456 - 7 - 8 + 9 = 123450 123456 - 7 + 8 - 9 = 123448 123456 + 7 - 8 - 9 = 123446 ... 168 possible equations tested You should not print the same equation more than once. ("1 - 2 - 3 + 456789" is the same as "1 - 2 - 3 + 456789", even if the computer thinks that the two minus symbols come in a different order.) Extra Credit: Write your program to accept an arbitrary number and ordering of digits, an arbitrary set of operators (but allowing the same operator more than once), and an arbitrary target number that the equation is supposed to evaluate to. [1] 2007 Puzzler Index: http://www.cartalk.com/content/puzzler/2007.html [2] http://www.cartalk.com/content/puzzler/transcripts/200711/index.html