v1 | function startsOnFriday(month, year) {
return new Date(year, month, 1).getDay() === 5;
}
function has31Days(month, year) {
return new Date(year, month, 31).getDate() === 31;
}
function checkMonths(year) {
var month, count = 0;
for (month = 0; month < 12; month += 1) {
if (startsOnFriday(month, year) && has31Days(month, year)) {
count += 1;
}
}
return count;
}
function fiveWeekends() {
var
startYear = 1900,
endYear = 2100,
year,
monthTotal = 0,
yearsWithoutFiveWeekends = [],
total = 0;
for (year = startYear; year <= endYear; year += 1) {
monthTotal = checkMonths(year);
total += monthTotal;
if (monthTotal === 0)
yearsWithoutFiveWeekends.push(year);
}
}
fiveWeekends();
| ready |
v2 | leap = 0,
start = 1,
day = start,
seq = [3, 0, 3, 2, 3, 2, 3, 3, 2, 3, 2, 3],
thirtyone = [1, 3, 5, 7, 8, 10, 12],
startYear = 1900,
year = startYear,
endYear = 2100,
num = 0;
for (; year < endYear + 1; ++year) {
leap = 0;
if (year % 4 === 0) {
if (year % 100 === 0) {
if (year % 400 === 0)
leap = 1;
} else
leap = 1;
}
for (i = 0; i < 12; ++i) {
for (j = 0; day === 5 && j < 7; j++) {
if (i + 1 === thirtyone[j]) {
num++;
break;
}
}
if (i == 1)
day = (day + leap) % 7;
else
day = (day + seq[i]) % 7;
if (day === 0)
day = 7;
}
}
| ready |