diff --git a/Project-Euler/Problem019.js b/Project-Euler/Problem019.js new file mode 100644 index 0000000000..43fd9f8a7e --- /dev/null +++ b/Project-Euler/Problem019.js @@ -0,0 +1,37 @@ +/* +You are given the following information, but you may prefer to do some research for yourself. + + * 1 Jan 1900 was a Monday. + * 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. + * A leap year occurs on any year evenly divisible by 4, but not on a century unless it is divisible by 400. + +How many Sundays fell on the first of the month during the twentieth century (1 Jan 1901 to 31 Dec 2000)? +*/ + +export function countingSundays () { + let numberOfSundays = 0 + let dow = 2 + + // The number od days in each month of the year + const months = [31, 0, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] + + for (let y = 1901; y <= 2000; y++) { + // Calculate the number of Days in February this year + months[1] = 28 + ((y % 4 === 0 && y % 100 !== 0) || y % 400 === 0) + + for (const month of months) { + dow = dow + (month % 7) + + if (dow % 7 === 0) { + numberOfSundays++ + } + } + } + + return numberOfSundays +} diff --git a/Project-Euler/test/Problem019.test.js b/Project-Euler/test/Problem019.test.js new file mode 100644 index 0000000000..42848d6175 --- /dev/null +++ b/Project-Euler/test/Problem019.test.js @@ -0,0 +1,8 @@ +import { countingSundays } from '../Problem019.js' + +describe('checking Counting Sundays', () => { + // Project Euler Condition Check + test('Test Euler Condition', () => { + expect(countingSundays()).toBe(171) + }) +})