Back to Freecodecamp

Problem 19: Counting Sundays

curriculum/challenges/english/blocks/project-euler-problems-1-to-100/5900f37f1000cf542c50fe92.md

latest1.5 KB
Original Source

--description--

You are given the following information, but you may prefer to do some research for yourself.

<ul> <li>1 Jan 1900 was a Monday.</li> <li>Thirty days has September, April, June and November. All the rest have thirty-one, Saving February alone, Which has twenty-eight, rain or shine. And on leap years, twenty-nine.</li> <li>A leap year occurs on any year evenly divisible by 4, but not on a century unless it is divisible by 400.</li> </ul>

How many Sundays fell on the first of the month during the twentieth century (1 Jan 1901 to 31 Dec 2000)?

--hints--

countingSundays(1943, 1946) should return a number.

js
assert.isNumber(countingSundays(1943, 1946));

countingSundays(1943, 1946) should return 6.

js
assert.strictEqual(countingSundays(1943, 1946), 6);

countingSundays(1995, 2000) should return 10.

js
assert.strictEqual(countingSundays(1995, 2000), 10);

countingSundays(1901, 2000) should return 171.

js
assert.strictEqual(countingSundays(1901, 2000), 171);

--seed--

--seed-contents--

js
function countingSundays(firstYear, lastYear) {

  return true;
}

countingSundays(1943, 1946);

--solutions--

js
function countingSundays(firstYear, lastYear) {
  let sundays = 0;

  for (let year = firstYear; year <= lastYear; year++) {
    for (let month = 0; month <= 11; month++) {
      const thisDate = new Date(year, month, 1);
      if (thisDate.getDay() === 0) {
        sundays++;
      }
    }
  }
  return sundays;
}