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

Reply via email to