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