The three rules of Ruby Q.:
-
Please do not post any solutions or spoiler discussion for this quiz
until
48 hours have passed from the time on this message. -
Support Ruby Q. by submitting ideas as often as you can:
- Enjoy!
Suggestion: A [QUIZ] in the subject of emails about the problem helps
everyone
on Ruby T. follow the discussion. Please reply to the original quiz
message,
if you can.
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
by Gavin K.
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