fivewktest

Benchmark created on


Test runner

Ready to run.

Testing in
TestOps/sec
v1
function startsOnFriday(month, year) {
  // 0 is Sunday, 1 is Monday, ... 5 is Friday, 6 is Saturday
  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;
    // extra credit
    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

Revisions

You can edit these tests or add more tests to this page by appending /edit to the URL.