Skip to content

Commit 0dabd20

Browse files
committed
Add Day 1 Part 2 and restructure stuff
1 parent 860d30f commit 0dabd20

File tree

4 files changed

+55
-10
lines changed

4 files changed

+55
-10
lines changed

README.md

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
11
# AdventOfCode
22

3-
Run a specific day by executing e.g. `mix run AdventOfCode.Day01.exs`
3+
To run:
4+
5+
```sh
6+
$ iex -S mix
7+
iex()> AdventOfCode.day01()
8+
```

lib/advent_of_code.ex

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,7 @@
11
defmodule AdventOfCode do
2+
def day01 do
3+
IO.puts "-- Day 01 --"
4+
AdventOfCode.Day01.Part01.run()
5+
AdventOfCode.Day01.Part02.run()
6+
end
27
end
Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,22 @@
1-
defmodule AdventOfCode.Day01 do
1+
defmodule AdventOfCode.Day01.Part01 do
22
def run do
3-
IO.puts "Inverse Captcha: #{solve()}"
3+
IO.puts "Part 1: #{solve()}"
44
end
55

6-
def solve do
6+
defp solve do
77
input()
88
|> String.codepoints()
99
|> add_first_last()
1010
|> sum_if_adjacent(0)
1111
end
1212

13-
def sum_if_adjacent([_], sum), do: sum
14-
def sum_if_adjacent([a, a | rest] = list, sum) do
13+
defp sum_if_adjacent([_], sum), do: sum
14+
defp sum_if_adjacent([a, a | rest], sum) do
1515
{int, ""} = Integer.parse(a)
1616
[a | rest]
1717
|> sum_if_adjacent(sum + int)
1818
end
19-
def sum_if_adjacent([a, b | rest] = list, sum) do
19+
defp sum_if_adjacent([_a, b | rest], sum) do
2020
[b | rest]
2121
|> sum_if_adjacent(sum)
2222
end
@@ -27,8 +27,6 @@ defmodule AdventOfCode.Day01 do
2727
end
2828

2929
defp input do
30-
"lib/inputs/day1_0.txt" |> File.read!() |> String.strip()
30+
"lib/inputs/day1_0.txt" |> File.read!() |> String.trim()
3131
end
3232
end
33-
34-
AdventOfCode.Day01.run()

lib/day01/part02.ex

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
defmodule AdventOfCode.Day01.Part02 do
2+
def run do
3+
IO.puts "Part 2: #{solve()}"
4+
end
5+
6+
defp solve do
7+
input()
8+
|> Enum.split(split_index(input()))
9+
|> zip()
10+
|> maybe_sum(0)
11+
|> Kernel.*(2)
12+
end
13+
14+
defp maybe_sum([], sum), do: sum
15+
defp maybe_sum([{a, a} | t], sum) do
16+
{a_int, ""} = Integer.parse(a)
17+
maybe_sum(t, sum + a_int)
18+
end
19+
defp maybe_sum([_ | t], sum), do: maybe_sum(t, sum)
20+
21+
defp zip({first, last}) do
22+
Enum.zip(first, last)
23+
end
24+
25+
defp split_index(list) do
26+
list
27+
|> length()
28+
|> div(2)
29+
end
30+
31+
defp input do
32+
"lib/inputs/day1_0.txt"
33+
|> File.read!()
34+
|> String.trim()
35+
|> String.codepoints()
36+
end
37+
end

0 commit comments

Comments
 (0)