36 lines
1.1 KiB
D
36 lines
1.1 KiB
D
void main() {
|
|
import std.stdio, std.datetime, std.traits;
|
|
|
|
enum first_year = 1900;
|
|
enum last_year = 2100;
|
|
|
|
uint totalNo5Weekends;
|
|
immutable(Date)[] fiveWeekendMonths;
|
|
foreach (immutable year; first_year .. last_year + 1) {
|
|
bool has5Weekends = false;
|
|
|
|
foreach (immutable month; EnumMembers!Month) {
|
|
immutable firstDay = Date(year, month, 1);
|
|
if (firstDay.daysInMonth == 31 &&
|
|
firstDay.dayOfWeek == DayOfWeek.fri) {
|
|
has5Weekends = true;
|
|
fiveWeekendMonths ~= firstDay;
|
|
}
|
|
}
|
|
|
|
if (!has5Weekends)
|
|
totalNo5Weekends++;
|
|
}
|
|
|
|
writefln("Total 5-weekend months between %d and %d: %d",
|
|
first_year, last_year, fiveWeekendMonths.length);
|
|
foreach (immutable date; fiveWeekendMonths[0 .. 5])
|
|
writeln(date.month, ' ', date.year);
|
|
"...".writeln;
|
|
foreach (immutable date; fiveWeekendMonths[$ - 5 .. $])
|
|
writeln(date.month, ' ', date.year);
|
|
|
|
writeln("\nTotal number of years with no 5-weekend months: ",
|
|
totalNo5Weekends);
|
|
}
|