Grains.pm (468B) - raw
1 package Grains; 2 3 use strict; 4 use warnings; 5 use feature qw<say>; 6 use bignum; 7 8 use Exporter qw<import>; 9 our @EXPORT_OK = qw<grains_on_square total_grains>; 10 11 sub grains_on_square { 12 my ($square) = @_; 13 die "square must be between 1 and 64" 14 if $square < 1 or $square > 64; 15 return 2 ** ( $square - 1 ); 16 } 17 18 sub total_grains { 19 my $total; 20 foreach my $square ( 1 .. 64 ) { 21 $total += grains_on_square( $square ); 22 } 23 return $total; 24 } 25 26 1;