[Date Prev][Date Next][Thread Prev][Thread Next] [Search] [Date Index] [Thread Index]

Re: [FWP] fun with numbers



So I'm a little late, but this message inspired me to get Tie::Math
working with multivariable equations (AND IT WASN'T EASY!)  So this
isn't exactly short, but I think its fun.

Note, Tie::Math only works under 5.6.0 because of the lexical subroutines.
    
    use Tie::Math qw(f X Y);
    
    my %pascal;
    tie %pascal, 'Tie::Math', sub { 
                                  if( X <= Y and Y > 0 and X > 0 ) {
                                      f(X,Y) = f(X-1,Y-1) + f(X,Y-1);
                                  }
                                  else {
                                      f(X,Y) = 0;
                                  }
                              },
                              sub { 
                                  f(1,1) = 1;  f(1,2) = 1;  f(2,2) = 1; 
                              };
    
    my $height = 13;
    for my $y (1..$height) {
        print "   " x ($height - $y);
        for my $x (1..$y) {
            printf " % 4d ", $pascal{$x,$y};
        }
        print "\n";
    }

Unfortunately, the if/else statement to bound the equation bothers me
deeply, since I intended Tie::Math to be familiar to mathematical
types and avoid any programming logic.  I'm working on a bounding
conditions so one can say something natural.


On Tue, Jun 06, 2000 at 11:53:06PM -0700, Perl lover wrote:
> write a program as short as possible(i made one, less than 70
> characters) to print numbers derived from (x+y) ** n (n is 1 to 14)
> in the following format:
> 
> 1
> 1 1
> 1 2 1
> 1 3 3 1
> 1 4 6 4 1
> 1 5 10 10 5 1
> 1 6 15 20 15 6 1
> 1 7 21 35 35 21 7 1
> 1 8 28 56 70 56 28 8 1
> 1 9 36 84 126 126 84 36 9 1
> 1 10 45 120 210 252 210 120 45 10 1
> 1 11 55 165 330 462 462 330 165 55 11 1
> 1 12 66 220 495 792 924 792 495 220 66 12 1
> 1 13 78 286 715 1287 1716 1716 1287 715 286 78 13 1
> 1 14 91 364 1001 2002 3003 3432 3003 2002 1001 364 91 14 1

-- 

Michael G Schwern      http://www.pobox.com/~schwern/	   schwern@pobox.com
At the doctor's office
 Winter wheat and water mix
 I walk funny now.
	 -- ignatz

==== Want to unsubscribe from Fun With Perl?  Well, if you insist...
==== Send email to <fwp-request@technofile.org> with message _body_
====   unsubscribe