diff options
| author | 冯昶 <fengchang@novel-supertv.com> | 2019-06-27 00:10:45 +0800 |
|---|---|---|
| committer | 冯昶 <fengchang@novel-supertv.com> | 2019-06-27 00:10:45 +0800 |
| commit | 365a21e5a71bd4db362173a597b0d970e6907ef8 (patch) | |
| tree | 0407ffcecf4eba25e271f68a0aa2bba53f806a09 /challenge-013 | |
| parent | b8d4ba46cfd21a36c9939ea950666141888a258b (diff) | |
| download | perlweeklychallenge-club-365a21e5a71bd4db362173a597b0d970e6907ef8.tar.gz perlweeklychallenge-club-365a21e5a71bd4db362173a597b0d970e6907ef8.tar.bz2 perlweeklychallenge-club-365a21e5a71bd4db362173a597b0d970e6907ef8.zip | |
challeng 014
Diffstat (limited to 'challenge-013')
| -rwxr-xr-x | challenge-013/feng-chang/perl5/ch-1.pl | 24 | ||||
| -rwxr-xr-x | challenge-013/feng-chang/perl5/ch-2.pl | 33 |
2 files changed, 57 insertions, 0 deletions
diff --git a/challenge-013/feng-chang/perl5/ch-1.pl b/challenge-013/feng-chang/perl5/ch-1.pl new file mode 100755 index 0000000000..1f2c604bc2 --- /dev/null +++ b/challenge-013/feng-chang/perl5/ch-1.pl @@ -0,0 +1,24 @@ +#!/bin/env perl + +use Modern::Perl; +use Date::Manip; + +sub is_leap_year { + my $year = shift; + + return 1 if $year % 400 == 0; + return 0 if $year % 100 == 0; + return 1 if $year % 4 == 0; + return 0; +} + +exit if @ARGV < 1; +my $year = $ARGV[0]; + +my @last_days = (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31); +$last_days[1] = 29 if is_leap_year($year); + +for my $month (1..12) { + my $d = ParseDate("$year-$month-". $last_days[$month - 1]); + say UnixDate(DateCalc($d, sprintf('- %d days', (UnixDate($d, '%w') - 5) % 7)), '%Y/%m/%d'); +} diff --git a/challenge-013/feng-chang/perl5/ch-2.pl b/challenge-013/feng-chang/perl5/ch-2.pl new file mode 100755 index 0000000000..27b72c67ce --- /dev/null +++ b/challenge-013/feng-chang/perl5/ch-2.pl @@ -0,0 +1,33 @@ +#!/bin/env perl + +use Modern::Perl; + +my @F = (1); +my @M = (0); + +sub F { + my $n = int(shift); + exit if $n < 0; + + return $F[$n] if defined $F[$n]; + + $F[$n] = $n - M(F($n - 1)); +} + +sub M { + my $n = int(shift); + exit if $n < 0; + + return $M[$n] if defined $M[$n]; + + $M[$n] = $n - F(M($n - 1)); +} + +exit unless defined $ARGV[0]; +my $n = $ARGV[0]; + +print(F($_), ' ') for 0 .. $n - 1; +say ''; + +print(M($_), ' ') for 0 .. $n - 1; +say ''; |
