The list has been fairly quiet of late so I thought I would share the
following simple little puzzle I heard recently.
Using the numbers 1,5,6,7 exactly once and using any of addition,
subtraction, division and/or multiplication zero or more times form an
expression that evaluates to 21. You may use brackets.
So 1 + 5 * (7 - 6) = 6 fr'instance
and 1 * 5 + 6 * 7 = 47
but the puzzle needs 21.
Yes, you must use every number at least once.
No, you may not repeat any number.
No, you may not use powers just +-/*.
No, you may not concatenate numbers together.
The puzzle is sufficiently simple that it can be solved with a pencil
and paper (although I think its not quite trivial and took me a couple
of hours). The Fun offcourse is in getting perl to solve it.
To get things started, here is one solution - without a real quantum
computer or at least a real grunty network of machines, its not going
to terminate any time soon. But its clear and simple.
#!/usr/bin/perl -lw
use Quantum::Superpositions;
use strict;
my $tree = my $num = any(1,5,6,7);
my $op = any qw!+ - / *!;
$tree = any eigenstates "($num $op $tree)",
eigenstates "($tree $op $num)"
for 1..3;
print grep { 21 == eval and not /(\d).*\1/ } eigenstates $tree;
__END__
Your quest is to find more efficient or elegant solutions.
--
Jasvir Nagra
http://www.cs.auckland.ac.nz/~jas