Calendar: Difference between revisions

Content added Content deleted
(→‎{{header|Python}}: Updated due to task change)
Line 164: Line 164:
30
30
</pre>
</pre>

=={{header|D}}==
{{works with|D|2}}
<lang d>import std.stdio, std.datetime, std.string, std.exception, std.conv, std.math;

void main() {
printCalendar(1969, 3);
}

void printCalendar(in int year, in int cols) {
enforce(1 <= cols && cols <= 12);
auto rows = cast(int)ceil(12.0 / cols);
auto date = Date(year, 1, 1);
auto offs = cast(int)date.dayOfWeek();
auto monthNames = "January February March April May June "
"July August September October November December".split(" ");
string[8][12] mons;
foreach (m; 0 .. 12) {
mons[m][0] = monthNames[m].center(21);
mons[m][1] = " Su Mo Tu We Th Fr Sa";
int eom = date.endOfMonthDay();
foreach (d; 1 .. 43) {
auto day = d > offs && d <= offs + eom;
auto str = day ? format(" %2s", d-offs) : " ";
mons[m][2 + (d - 1) / 7] ~= str;
}
offs = (offs + eom) % 7;
date.add!q{months}(1);
}

writeln("[Snoopy Picture]".center(cols * 24 + 4));
writeln(to!string(year).center(cols * 24 + 4), "\n");
foreach (r; 0 .. rows) {
auto s = new string[][](8);
foreach (c; 0 .. cols) {
if (r * cols + c > 11) break;
foreach (i, line; mons[r * cols + c])
s[i] ~= line;
}
writeln(" ", join(join(s, ["\n"]), " "), "\n");
}
}</lang>

<pre> [Snoopy Picture]
1969

January February March
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
1 2 3 4 1 1
5 6 7 8 9 10 11 2 3 4 5 6 7 8 2 3 4 5 6 7 8
12 13 14 15 16 17 18 9 10 11 12 13 14 15 9 10 11 12 13 14 15
19 20 21 22 23 24 25 16 17 18 19 20 21 22 16 17 18 19 20 21 22
26 27 28 29 30 31 23 24 25 26 27 28 23 24 25 26 27 28 29
30 31

April May June
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
1 2 3 4 5 1 2 3 1 2 3 4 5 6 7
6 7 8 9 10 11 12 4 5 6 7 8 9 10 8 9 10 11 12 13 14
13 14 15 16 17 18 19 11 12 13 14 15 16 17 15 16 17 18 19 20 21
20 21 22 23 24 25 26 18 19 20 21 22 23 24 22 23 24 25 26 27 28
27 28 29 30 25 26 27 28 29 30 31 29 30


July August September
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
1 2 3 4 5 1 2 1 2 3 4 5 6
6 7 8 9 10 11 12 3 4 5 6 7 8 9 7 8 9 10 11 12 13
13 14 15 16 17 18 19 10 11 12 13 14 15 16 14 15 16 17 18 19 20
20 21 22 23 24 25 26 17 18 19 20 21 22 23 21 22 23 24 25 26 27
27 28 29 30 31 24 25 26 27 28 29 30 28 29 30
31

October November December
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
1 2 3 4 1 1 2 3 4 5 6
5 6 7 8 9 10 11 2 3 4 5 6 7 8 7 8 9 10 11 12 13
12 13 14 15 16 17 18 9 10 11 12 13 14 15 14 15 16 17 18 19 20
19 20 21 22 23 24 25 16 17 18 19 20 21 22 21 22 23 24 25 26 27
26 27 28 29 30 31 23 24 25 26 27 28 29 28 29 30 31
30</pre>

=={{header|J}}==
=={{header|J}}==
'''Solution:'''
'''Solution:'''