# HG changeset patch # User Steve Losh # Date 1487257146 0 # Node ID cdd3f0c782573616ab0814fbf4b48b6c3080ce14 # Parent 9d7ea7bf528b79d1727214439a9f69dc06be7551 Problem 19 diff -r 9d7ea7bf528b -r cdd3f0c78257 euler.asd --- a/euler.asd Wed Feb 15 10:24:14 2017 +0000 +++ b/euler.asd Thu Feb 16 14:59:06 2017 +0000 @@ -13,6 +13,7 @@ :fiveam :iterate :losh + :local-time ) diff -r 9d7ea7bf528b -r cdd3f0c78257 src/euler.lisp --- a/src/euler.lisp Wed Feb 15 10:24:14 2017 +0000 +++ b/src/euler.lisp Thu Feb 16 14:59:06 2017 +0000 @@ -514,6 +514,29 @@ triangle :from-end t)))) +(defun problem-19 () + ;; 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)? + (iterate + (for-nested ((year :from 1901 :to 2000) + (month :from 1 :to 12))) + (counting (-<> (local-time:encode-timestamp 0 0 0 0 1 month year) + local-time:timestamp-day-of-week + zerop)))) + ;;;; Tests -------------------------------------------------------------------- (def-suite :euler) @@ -537,6 +560,7 @@ (test p16 (is (= 1366 (problem-16)))) (test p17 (is (= 21124 (problem-17)))) (test p18 (is (= 1074 (problem-18)))) +(test p19 (is (= 171 (problem-19)))) ;; (run! :euler)