1: #!perl w 2: 3: # BinomialExpansion.pl 4: 5: # usage perl BinomialExpansion.pl n, where n is an integer > 0 6: 7: # ** the memory goes crazy after the 170th power 8: # the expansion of (x+y)^170 peaks at 9.14484184513157e+049 * x^85 * y^85 9: # so you can imagine what happens if you put int n>170 10: 11: my $n = ($_=shift) > 0 ? int $_ : 12: die "'usage perl BinomialExpansion.pl 9, where n > 0'"; 13: 14: print _titled_hr(' Binomial Expansion For (x+y)^',$n,' '); 15: 16: for my $j (0 .. $n) 17: { 18: my $coefficient = nCr($n,$j); 19: my $nj=$n$j; 20: print $coefficient; 21: print $_ = ($nj!=0)?( ($nj>1)?(' * x^'.$nj):(' * x') ):''; 22: print $_ = ($j!=0)?( ($j==1)?(' * y'):(' * y^'.$j) ):''; 23: print $_ = ($j!=$n)?(" +\n"):("\n"); 24: } 25: 26: print ' 'x 25,' = (x + y)^',$n, "\n"x 3; 27: 28: # returns n!/r!(nr)! 29: sub nCr 30: { 31: my $n=shift; 32: my $r=shift; 33: 34: return int nFactorial($n) / int nFactorial($r) * int nFactorial($n$r); 35: } 36: 37: # like the name says, n! 38: sub nFactorial 39: { 40: my $n=shift; 41: my $product = 1; 42: 43: while($n>0) 44: { 45: $product *= $n; 46: } 47: 48: return $product; 49: } 50: 51: # neat little titled hr, that does a < 80 chars since int rounds down 52: # i really, really, like it 53: sub _titled_hr 54: { 55: my $string = join('', @_); 56: my $oy = int (80 (length $string) )/ 2; 57: return "\n","" x $oy, $string, "" x $oy,"\n"; 58: } 59: 60: __END__ 61: # some random things i say 62: #1 63: ". .. . .  .. . .. . ... ..." 64: 65: #2 66: "... ..    .. ... ..    .." 67: 68: #3 69:  ... . ... ...  .... .  .... .. . . ... .. ...  ...  70: .. 71: ..  .. ... ...  .  .. . ..  .... .   ...  ... 72: .... ....  .. .. .. .  ... ...  .. .. . . 73: 74: # a lil sample from my machine 75: 76: F:\>perl BinomialExpansion.pl 9 77: 1 * x^9 + 78: 9 * x^8 * y + 79: 36 * x^7 * y^2 + 80: 84 * x^6 * y^3 + 81: 126 * x^5 * y^4 + 82: 126 * x^4 * y^5 + 83: 84 * x^3 * y^6 + 84: 36 * x^2 * y^7 + 85: 9 * x * y^8 + 86: 1 * * y^9 87: = (x + y)^9 88: F:\> 89: 90: # Notice a pattern? Fleet attack! 91: # > 92: # > 93: # > 94: # > 95: # > 96: # > 97: # > 98: # > 99: # > 100: # >


Replies are listed 'Best First'.  

Sierpinskij (Re: Binomial Expansion)
by larsen (Parson) on Mar 29, 2001 at 13:48 UTC  
by tye (Sage) on Mar 29, 2001 at 21:13 UTC  
by rpc (Monk) on Mar 29, 2001 at 23:10 UTC  
by oha (Friar) on Dec 19, 2003 at 20:05 UTC  
Re: Binomial Expansion
by ariels (Curate) on Mar 29, 2001 at 14:41 UTC  
by japhy (Canon) on Mar 29, 2001 at 21:39 UTC  
by crazyinsomniac (Prior) on Mar 31, 2001 at 04:41 UTC  
by tye (Sage) on Mar 31, 2001 at 12:26 UTC  
by tilly (Archbishop) on Mar 31, 2001 at 23:32 UTC  
by tilly (Archbishop) on Apr 01, 2001 at 05:26 UTC  
by tye (Sage) on Apr 01, 2001 at 08:09 UTC  
 
by ariels (Curate) on Apr 11, 2001 at 10:55 UTC 