A batteries included starter pack for participating in Advent of Code using Elixir!
There are 25 modules, 25 tests, and 50 mix tasks.
The modules are responsible for the implementation using inputs. The tests are responsible for verifying the test cases in the puzzle text are checked. The mix tasks are responsible for producing the complete output and benchmarking the results.
- Fill in the tests with the example solution(s) for part 1.
- Note: We explicitly make assertions match the test cases given in the puzzle text.
- Write your implementation.
- Make sure your test passes by running
mix test
. - Fill in the final problem inputs into the mix task and run
mix d01.p1
!- Benchmark your solution by passing the
-b
flag,mix d01.p1 -b
- Benchmark your solution by passing the
- Input the puzzle answer to unlock part 2. Repeat for each day that has multiple parts.
defmodule AdventOfCode.Day01 do
def part1(args) do
end
def part2(args) do
end
end
defmodule AdventOfCode.Day01Test do
use ExUnit.Case
import AdventOfCode.Day01
@tag :skip # Make sure to remove to run your test.
test "part1" do
input = nil
result = part1(input)
assert result
end
@tag :skip # Make sure to remove to run your test.
test "part2" do
input = nil
result = part2(input)
assert result
end
end
defmodule Mix.Tasks.D01.P1 do
use Mix.Task
import AdventOfCode.Day01
@shortdoc "Day 01 Part 1"
def run(args) do
input = nil
if Enum.member?(args, "-b"),
do: Benchee.run(%{part_1: fn -> input |> part1() end}),
else:
input
|> part1()
|> IO.inspect(label: "Part 1 Results")
end
end
- Click Use this template.
- Fill in
Repository name
. - Fill in
Description
(optional). - Choose
Public
orPrivate
access. - Uncheck
include all branches
as we only care for main.
# clone
$ git clone git@github.com:mhanberg/advent-of-code-elixir-starter.git advent-of-code
$ cd advent-of-code
# Reinitialize your git repo
$ rm -rf .git
$ git init