aboutsummaryrefslogtreecommitdiff
path: root/julia
diff options
context:
space:
mode:
Diffstat (limited to 'julia')
-rw-r--r--julia/001-multiples_of_3_and_5.jl10
-rw-r--r--julia/002-even_fibonacci_numbers.jl40
2 files changed, 50 insertions, 0 deletions
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
+ )
+ )
+))