45 lines
1.3 KiB
Perl
45 lines
1.3 KiB
Perl
$PROGRAM = '\'
|
|
|
|
MY @START_DOW = (3, 6, 6, 2, 4, 0,
|
|
2, 5, 1, 3, 6, 1);
|
|
MY @DAYS = (31, 28, 31, 30, 31, 30,
|
|
31, 31, 30, 31, 30, 31);
|
|
|
|
MY @MONTHS;
|
|
FOREACH MY $M (0 .. 11) {
|
|
FOREACH MY $R (0 .. 5) {
|
|
$MONTHS[$M][$R] = JOIN " ",
|
|
MAP { $_ < 1 || $_ > $DAYS[$M] ? " " : SPRINTF "%2D", $_ }
|
|
MAP { $_ - $START_DOW[$M] + 1 }
|
|
$R * 7 .. $R * 7 + 6;
|
|
}
|
|
}
|
|
|
|
SUB P { WARN $_[0], "\\N" }
|
|
P UC " [INSERT SNOOPY HERE]";
|
|
P " 1969";
|
|
P "";
|
|
FOREACH (UC(" JANUARY FEBRUARY MARCH APRIL MAY JUNE"),
|
|
UC(" JULY AUGUST SEPTEMBER OCTOBER NOVEMBER DECEMBER")) {
|
|
P $_;
|
|
MY @MS = SPLICE @MONTHS, 0, 6;
|
|
P JOIN " ", ((UC "SU MO TU WE TH FR SA") X 6);
|
|
P JOIN " ", MAP { SHIFT @$_ } @MS FOREACH 0 .. 5;
|
|
}
|
|
|
|
\'';
|
|
|
|
# LOWERCASE LETTERS
|
|
$E = '%' | '@';
|
|
$C = '#' | '@';
|
|
$H = '(' | '@';
|
|
$O = '/' | '@';
|
|
$T = '4' | '@';
|
|
$R = '2' | '@';
|
|
$A = '!' | '@';
|
|
$Z = ':' | '@';
|
|
$P = '0' | '@';
|
|
$L = ',' | '@';
|
|
|
|
`${E}${C}${H}${O} $PROGRAM | ${T}${R} A-Z ${A}-${Z} | ${P}${E}${R}${L}`;
|