Jasvir Nagra <[EMAIL PROTECTED]> writes:

> #!/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__


#!/usr/bin/perl

sub permu {
    return ([]) unless @_;
    map { my $i=$_; map { [$_[$i],@$_] } permu(@_[0..$_-1,$_+1..$#_]) } 0..$#_;
}

sub combi {
    my $n; ($n,@_)[EMAIL PROTECTED]; return ([]) unless $n;
    map { my $i=$_; map { [EMAIL PROTECTED],$_] } @_ } combi($n-1,@_);
}
    
for $tree ("(%s %s %s) %s (%s %s %s)",
           "((%s %s %s) %s %s) %s %s",
           "(%s %s (%s %s %s)) %s %s",
           "%s %s ((%s %s %s) %s %s)",
           "%s %s (%s %s (%s %s %s))") {
    for $nums (permu(1,5,6,7)) {
        for $ops (combi(3,'+','-','*','/')) {
            my $expr = sprintf(sprintf($tree,map{$_,"%s"[EMAIL PROTECTED]),@$ops);
            print "$expr\n" if 21 == eval $expr;
        }
    }
}
__END__

In retrospect, I could also have put %%s in the format strings instead
of using that map.

-- 
Jed Davis               |"But life wasn't yes-no, on-off.  Life was shades of
<[EMAIL PROTECTED]>        | gray, and rainbows not in the order of the spectrum."
<[EMAIL PROTECTED]>|   -- L. E. Modesitt, Jr., _Adiamante_
PGP key (fingerable) F33659F9 A098:903E:9B9A:DEF4:168F:AA09:BF07:807E:F336:59F9

Reply via email to