5ead51575b7f
Problem 40
author | Steve Losh <steve@stevelosh.com> |
---|---|
date | Sat, 25 Feb 2017 13:19:47 +0000 |
parents | 03ea7bc6d3b9 |
children | e42edcf7b2e7 |
branches/tags | (none) |
files | src/euler.lisp |
Changes
--- a/src/euler.lisp Sat Feb 25 12:57:22 2017 +0000 +++ b/src/euler.lisp Sat Feb 25 13:19:47 2017 +0000 @@ -1170,6 +1170,29 @@ (for p :from 1 :to 1000) (finding p :maximizing (length (pythagorean-triplets-of-perimeter p))))) +(defun problem-40 () + ;; An irrational decimal fraction is created by concatenating the positive + ;; integers: + ;; + ;; 0.123456789101112131415161718192021... + ;; + ;; It can be seen that the 12th digit of the fractional part is 1. + ;; + ;; If dn represents the nth digit of the fractional part, find the value of + ;; the following expression. + ;; + ;; d1 × d10 × d100 × d1000 × d10000 × d100000 × d1000000 + (iterate + top + (with index = 0) + (for i :from 1) + (iterate (for d :in (digits i)) + (incf index) + (when (member index '(1 10 100 1000 10000 100000 1000000)) + (in top (multiplying d)) + (when (= index 1000000) + (in top (terminate))))))) + ;;;; Tests -------------------------------------------------------------------- (def-suite :euler) @@ -1214,6 +1237,7 @@ (test p37 (is (= 748317 (problem-37)))) (test p38 (is (= 932718654 (problem-38)))) (test p39 (is (= 840 (problem-39)))) +(test p40 (is (= 210 (problem-40)))) ;; (run! :euler)