diff options
| -rw-r--r-- | challenge-013/lakpatashi/README | 1 | ||||
| -rwxr-xr-x | challenge-013/lakpatashi/perl/ch-1.pl | 31 | ||||
| -rwxr-xr-x | challenge-013/lakpatashi/perl/ch-2.pl | 23 |
3 files changed, 55 insertions, 0 deletions
diff --git a/challenge-013/lakpatashi/README b/challenge-013/lakpatashi/README new file mode 100644 index 0000000000..bc153bd576 --- /dev/null +++ b/challenge-013/lakpatashi/README @@ -0,0 +1 @@ +Solution by lakpatashi diff --git a/challenge-013/lakpatashi/perl/ch-1.pl b/challenge-013/lakpatashi/perl/ch-1.pl new file mode 100755 index 0000000000..e728f5076e --- /dev/null +++ b/challenge-013/lakpatashi/perl/ch-1.pl @@ -0,0 +1,31 @@ +#!/usr/bin/perl + +use warnings; +use strict; +use Data::Dumper; +use List::Util qw(sum); +use feature qw(switch); + +#part 1 +use Time::Local qw(); + +my $year = 2012; +for my $month (1..12){ + # 5 is friday + printf "%.4d-%.2d-%.2d\n",$year,$month,last_dow_month($year,$month,5); +} + +sub last_dow_month{ + # 0 <= month <= 11 + my ($year, $month, $dow) = @_; + $year += int ($month/12); + $month %= 12; + + # 1 day = 86400 sec + my $time = Time::Local::timegm(0,0,0,1,$month,$year)-86400; + my ($mday,$wday) = (gmtime($time))[3,6]; + return $mday - ($wday - $dow) % 7; +} + + + diff --git a/challenge-013/lakpatashi/perl/ch-2.pl b/challenge-013/lakpatashi/perl/ch-2.pl new file mode 100755 index 0000000000..47d9a19d48 --- /dev/null +++ b/challenge-013/lakpatashi/perl/ch-2.pl @@ -0,0 +1,23 @@ +#!/usr/bin/perl + +use warnings; +use strict; +use Data::Dumper; +use List::Util qw(sum); +use feature qw(switch); + +#part 2 +sub F{ + my $n = shift; + return $n<=0? 1: $n - M(F($n-1)); +} + +sub M{ + my $n = shift; + return $n<=0? 0: $n - F(M($n-1)); +} + +print "i\tF(i)\tM(i)\n"; +for my $i (0..10){ + print $i,"\t",F($i),"\t",M($i),"\n"; +} |
