p0019_s0.py
problem 19 · 25 lines
#!/usr/bin/env python3.14
# -*- coding: utf-8 -*-
""" Solution to Euler Problem 19: Counting Sundays [Level 2]. """
from __future__ import annotations
import datetime
from solver.runners import runner
@runner.main
def solve(*args: str) -> str:
"""Linear scan over every first-of-month, counting those that fall on a Sunday via
datetime.date.isoweekday() (7 == Sunday); O(Y) for a span of Y years."""
end_year = runner.parse_int(args[0])
start_year = runner.parse_int(args[1])
return str(sum(
(datetime.date(y, m, day=1).isoweekday() == 7 for m in range(1, 13) for y in range(start_year, end_year + 1))
))
if __name__ == "__main__":
raise SystemExit(solve())