aboutsummaryrefslogtreecommitdiff
path: root/aoc-2019-elixir/lib/util.ex
blob: ada31bec428ff1f270ea91f3079f2a6a82404f34 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
defmodule Util.Integer do
  @spec parse!(binary) :: integer
  def parse!(binary) do
    {integer, _remainder} = Integer.parse(binary)
    integer
  end
end

defmodule Util.Input do
  @spec read_text(binary) :: binary
  def read_text(filename) do
    File.read!("data/#{filename}.txt")
  end

  @spec read_lines(binary) :: [binary]
  def read_lines(filename) do
    filename |> read_text() |> String.split()
  end

  @spec read_numbers(binary) :: [integer]
  def read_numbers(filename) do
    filename
    |> read_lines()
    |> Enum.map(&Util.Integer.parse!/1)
  end
end