RosettaCodeData/Task/Doomsday-rule/Perl/doomsday-rule.pl
2023-07-01 13:44:08 -04:00

21 lines
636 B
Perl

# 20210602 Perl programming solution
use strict;
use warnings;
sub dow ($) {
my ($year, $month, $day) = split /-/;
my @D = $year%($year%25?4:16) ? (3,7,7,4,2,6,4,1,5,3,7,5) : (4,1,7,2,4,6,4,1,5,3,7,5);
my $c = int($year / 100);
my $s = ($year % 100) / 12;
my $t = ($year % 100) % 12;
my $a = ( 5 * ($c % 4) + 2 ) % 7;
my $b = ( $s + $t + int($t / 4) + $a ) % 7;
qw ( Sunday Monday Tuesday Wednesday Thursday Friday Saturday ) [
($b + $day - $D[$month - 1] + 7) % 7 ]
}
for (qw( 1800-01-06 1875-03-29 1915-12-07 1970-12-23 2043-05-14 2077-02-12 2101-04-02 )) {
print $_, " is a : ", dow $_, "\n";
}