On Tue, 8 Oct 2002, Chris Devers wrote:
> On a different note, last weekend on NPR there was a puzzle that it seems
> to me could be solved pretty neatly by a Perl script, and I'm curious
> what solutions people would try for it. Consider the following string:
>
> 1 2 3 4 5 6 7 8 9 = 2002
>
> The problem is to add any number of addition & multiplication operations
> wherever you'd like on the left such that in the end you have a valid
> equation. So for example if it gets you to a solution you can have:
>
> 12 * 345 + 6 ...
>
> if that works as part of your solution [it's much too big: 4146].
>
> Bearing in mind that multiplication takes higher precedence than addition,
> what is the solution? Supposedly there is only one correct answer, but I
> haven't yet figured it out. Anyone want to suggest a clever solution?
> Maybe a oneliner? Maybe a proof of multiple correct answers? Fire away :)
As for a proof for multiple correct answers wht about
[mike@ratdog tmp]$ perl -de 1
Loading DB routines from perl5db.pl version 1.19
Editor support available.
Enter h or `h h' for help, or `man perldebug' for more help.
main::(-e:1): 1
DB<1> print 1*2+34*56+7+89
2002
DB<2> print 1*23+45*6*7+89
2002
Mike
Unfortunately the code to do it looks like
g = Generator.new(%w(1 2 3 4 5 6 7 8 9), ['', '+', '*'])
g.each { |expr|
puts expr if eval(expr) == 2002
}
or
G.new('123456789', '+*').find_all {|e| eval(e) == 2002}.each {|e| puts e}
so I'll leave a non-brute force perl one line implementation to the reader
;-)
--
[EMAIL PROTECTED] | The "`Stok' disclaimers" apply.
http://www.stok.co.uk/~mike/ | GPG PGP Key 1024D/059913DA
[EMAIL PROTECTED] | Fingerprint 0570 71CD 6790 7C28 3D60
http://www.exegenix.com/ | 75D2 9EC4 C1C0 0599 13DA
_______________________________________________
Boston-pm mailing list
[EMAIL PROTECTED]
http://mail.pm.org/mailman/listinfo/boston-pm