Euler Problem 19: Counting Sundays — When does the week start?

Euler Problem 19 is so trivial it is almost not worth writing an article about. One interesting aspect of this problem is the naming of weekdays and deciding which day the week starts. This issue is more complex than it sounds because data science is in essence not about data but about people.

Euler Problem 19 Definition

  • 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)?


The problem can be quickly solved with R base code and a tiny bit faster when using the lubridate package.

# Base R-code
dates <- seq.Date(as.Date("1901/01/01"), as.Date("2000/12/31"), "days")
days <- rep(1:7, length.out = length(dates))
answer <- sum(days[substr(dates, 9, 10) == "01"] == 1)

#Using Lubridate
library(lubridate, quietly = TRUE)
answer <- sum(wday(dates[substr(dates, 9, 10) == "01"]) == 1)

To draw out this post a little bit further I wrote some code to solve the problem without using the calendar functions in R. <- 0
answer <- 0
for (y in 1901:2000) {
    for (m in 1:12) { <- 31
        if (m %in% c(4, 6, 9, 11)) <- 30
        # Leap years
        if (m == 2) {
            if (y %% 4 == 0 & y %% 100 != 0 | y %% 400 == 0) <- 29
            else <- 28
        for (d in {
   <- + 1
            if ( == 8) <- 1
            if ( == 1 & d == 1) answer <- answer + 1

View the latest version of this code on GitHub.

Which day does the week start?

The only aspect remotely interesting about this problem is the conversion from weekdays to numbers. In R, Monday is considered day one, which makes sense in the Christian context of Western culture. Saturday and Sunday are the weekend, the two last days of the week so they are day 6 and 7. According to international standard ISO 8601, Monday is the first day of the week. Although this is the international standard, several countries, including the United States and Canada, consider Sunday to be the first day of the week.

The international standard is biased towards Christianity. The Christian or Western world marks Sunday as their day of rest and worship. Muslims refer to Friday as their day of rest and prayer. The Jewish calendar counts Saturday—the Sabbath—as the day of rest and worship. This idea is also shared by Seventh-Day Adventists.

this example shows that data science is not only about data: it is always about people and how they interpret the world.


4 thoughts on “Euler Problem 19: Counting Sundays — When does the week start?

  1. You can simplify the lubridate code with

    dates <- seq.Date(as.Date("1901/01/01"), as.Date("2000/12/01"), "months")
    answer <- sum(wday(dates) == 1)
  2. Pingback: Euler Problem 19: Counting Sundays — When does the week start? | A bunch of data

  3. Pingback: Euler Problem 19: Counting Sundays — When does the week start? – Mubashir Qasim

Feel free to share your thoughts about this article