aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCharles Cabergs <me@cacharle.xyz>2021-06-18 19:17:56 +0200
committerCharles Cabergs <me@cacharle.xyz>2021-06-18 19:17:56 +0200
commit815fbb2a697a060411f19f70ecdaa5c775b430cb (patch)
treef046efba82674917538f368f365fa4ebb6a304e0
parent3c4d885ba7fd25731c030813888b6e3285ed7c2a (diff)
downloadproject_euler-815fbb2a697a060411f19f70ecdaa5c775b430cb.tar.gz
project_euler-815fbb2a697a060411f19f70ecdaa5c775b430cb.tar.bz2
project_euler-815fbb2a697a060411f19f70ecdaa5c775b430cb.zip
problem 1 2 in julia
-rw-r--r--config.json8
-rw-r--r--julia/001-multiples_of_3_and_5.jl10
-rw-r--r--julia/002-even_fibonacci_numbers.jl40
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
+ )
+ )
+))