use strict; use warnings; use List::Util qw(reduce); my $numTosses = 20; #my $runs = (1<<$numTosses)-1; my @triangle = (0, 1, 0); for (1 .. $numTosses) { my @newTriangle=(0); push @newTriangle, $triangle[$_]+$triangle[$_+1] for 0 .. $#triangle-1; push @newTriangle, 0; @triangle = @newTriangle; } print <## $ time perl 892293.pl Name "main::a" used only once: possible typo at 892293.pl line 21. Name "main::b" used only once: possible typo at 892293.pl line 21. Tails Count % ----- ---------- ------ 0 1 0.00 1 20 0.00 2 190 0.02 3 1140 0.11 4 4845 0.46 5 15504 1.48 6 38760 3.70 7 77520 7.39 8 125970 12.01 9 167960 16.02 10 184756 17.62 11 167960 16.02 12 125970 12.01 13 77520 7.39 14 38760 3.70 15 15504 1.48 16 4845 0.46 17 1140 0.11 18 190 0.02 19 20 0.00 20 1 0.00 real 0m0.034s user 0m0.024s sys 0m0.012s #### $ time perl 892293.pl Name "main::a" used only once: possible typo at 892293.pl line 21. Name "main::b" used only once: possible typo at 892293.pl line 21. Tails Count % ----- ---------- ------ 0 1 0.00 1 32 0.00 2 496 0.00 3 4960 0.00 4 35960 0.00 5 201376 0.00 6 906192 0.02 7 3365856 0.08 8 10518300 0.24 9 28048800 0.65 10 64512240 1.50 11 129024480 3.00 12 225792840 5.26 13 347373600 8.09 14 471435600 10.98 15 565722720 13.17 16 601080390 13.99 17 565722720 13.17 18 471435600 10.98 19 347373600 8.09 20 225792840 5.26 21 129024480 3.00 22 64512240 1.50 23 28048800 0.65 24 10518300 0.24 25 3365856 0.08 26 906192 0.02 27 201376 0.00 28 35960 0.00 29 4960 0.00 30 496 0.00 31 32 0.00 32 1 0.00 real 0m0.034s user 0m0.028s sys 0m0.004s #### use strict; use warnings; use List::Util qw(reduce); use bignum; my $numTosses = 64; #my $runs = (1<<$numTosses)-1; my @triangle = (0, 1, 0); for (1 .. $numTosses) { my @newTriangle=(0); push @newTriangle, $triangle[$_]+$triangle[$_+1] for 0 .. $#triangle-1; push @newTriangle, 0; @triangle = @newTriangle; } print <