Advent of Code (AOC) 2018 has finally arrived. This is the first time I participate in AOC. Last year, when I first heard of AOC, I wanted to participate in it. But due to heavy workload from university, I just give up on doing it.
This year, it’s different, I had graduated and working remotely. Hence, this
year, I can schedule some time to work on this event. I am going to use
Elixir to solve the puzzles this year. The codes will be available to
my GitHub repo.
If things go well, I might continue writing down my journey on solving the puzzles of AOC 2018.
Without further ado, let’s start discussing the puzzles of Day 1.
Part 1
Part 1 is straightforward. A list of frequencies will given, and we have to sum up the frequencies. For example, from the problem descriptions:
Here are other example situations:
    +1, +1, +1 results in  3
    +1, +1, -2 results in  0
    -1, -2, -3 results in -6
So, the question of part 1 is:
Starting with a frequency of zero, what is the resulting frequency after all of the changes in frequency have been applied?
Straight forward and easy right?
So here is the puzzle inputs:
-9
+7
+5
-13
+6
...
-23
-46
-27
-11
-75223
Solution:
case File.read("input.txt") do
  {:ok, content} ->
    content
    |> String.split()
    |> Enum.map(&String.to_integer/1)
    |> Enum.sum
    |> IO.inspect
  {:error, _} -> IO.puts "Error opening files"
end
- First, we read in the input from 
input.txtusingFile.read/1 - Next, we split the content by newline using 
String.split/1. Now, we have a list of string representing the frequency. - Then, we map through the list with 
Enum.map/2and convert the string to integer usingString.to_integer/1. - Lastly, we call 
Enum.sum/2to sum frequencies, which loops through every element in the list and add it up. 
Performance: It takes around 0.3 seconds to compute the answer.
$ time elixir part-1.ex
real	0m0.350s
user	0m0.321s
sys	0m0.155s
Day 1 Part 1, Done.
Read Part 2 here.