diff options
| -rw-r--r-- | config.json | 8 | ||||
| -rw-r--r-- | julia/001-multiples_of_3_and_5.jl | 10 | ||||
| -rw-r--r-- | julia/002-even_fibonacci_numbers.jl | 40 |
3 files changed, 58 insertions, 0 deletions
diff --git a/config.json b/config.json index a0aa8a9..812e3d7 100644 --- a/config.json +++ b/config.json @@ -42,6 +42,14 @@ "prefix" : "* ", "bottom": "*/" } + }, + "julia": { + "extension": "jl", + "comment": { + "top": "###", + "prefix" : "# ", + "bottom": "###" + } } }, "url_format": "http://projecteuler.net/problem={index}", diff --git a/julia/001-multiples_of_3_and_5.jl b/julia/001-multiples_of_3_and_5.jl new file mode 100644 index 0000000..09e15dd --- /dev/null +++ b/julia/001-multiples_of_3_and_5.jl @@ -0,0 +1,10 @@ +### +# Multiples of 3 and 5 +# Problem 1 +# +# If we list all the natural numbers below 10 that are multiples of 3 or 5, +# we get 3, 5, 6 and 9. The sum of these multiples is 23. +# Find the sum of all the multiples of 3 or 5 below 1000. +### + +println(sum(x for x in 1:999 if x % 3 == 0 || x % 5 == 0)) diff --git a/julia/002-even_fibonacci_numbers.jl b/julia/002-even_fibonacci_numbers.jl new file mode 100644 index 0000000..052d20d --- /dev/null +++ b/julia/002-even_fibonacci_numbers.jl @@ -0,0 +1,40 @@ +### +# Even Fibonacci numbers +# Problem 2 +# +# Each new term in the Fibonacci sequence is generated by adding the previous two terms. +# By starting with 1 and 2, the first 10 terms will be: +# 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ... +# By considering the terms in the Fibonacci sequence whose values do not exceed four million, +# find the sum of the even-valued terms. +### + +using Base.Iterators + +cache = Dict() +function fib(n) + if haskey(cache, n) + return cache[n] + end + if n < 3 + return n + end + cache[n] = fib(n - 1) + fib(n - 2) + return cache[n] +end + +# https://stackoverflow.com/questions/56137634/function-chaining-in-julia +# need curried functions +# ( (fib(n) for n in 1:1_000_000) +# |> takewhile(<(4_000_000)) +# ) + +println(sum( + Iterators.filter( + x -> x % 2 == 0, + takewhile( + <(4_000_000), + fib(n) for n in 1:1_000_000 + ) + ) +)) |
