diff --git a/lib/2015/day_02.ex b/lib/2015/day_02.ex index 10cd868..dd14f34 100644 --- a/lib/2015/day_02.ex +++ b/lib/2015/day_02.ex @@ -35,12 +35,12 @@ defmodule AdventOfCode.Y2015.Day02 do |> Enum.reduce(&Kernel.+/2) end - @spec required_paper([non_neg_integer(), ...]) :: non_neg_integer() + @spec required_paper([pos_integer(), ...]) :: pos_integer() defp required_paper(sides) do surface_area(sides) + minimum(area_per_dim(sides)) end - @spec surface_area([non_neg_integer(), ...]) :: non_neg_integer() + @spec surface_area([pos_integer(), ...]) :: pos_integer() defp surface_area(sides) do sides |> area_per_dim() @@ -48,17 +48,17 @@ defmodule AdventOfCode.Y2015.Day02 do |> Kernel.*(2) end - @spec area_per_dim([non_neg_integer(), ...]) :: [non_neg_integer(), ...] + @spec area_per_dim([pos_integer(), ...]) :: [pos_integer(), ...] defp area_per_dim([width, length, height]) do [length * width, width * height, height * length] end - @spec minimum([non_neg_integer(), ...]) :: non_neg_integer() + @spec minimum([pos_integer(), ...]) :: pos_integer() defp minimum([side_1, side_2, side_3]) do side_1 |> min(side_2) |> min(side_3) end - @spec smallest_perimeter_plus_volume([non_neg_integer(), ...]) :: non_neg_integer() + @spec smallest_perimeter_plus_volume([pos_integer(), ...]) :: pos_integer() defp smallest_perimeter_plus_volume([width, length, height]) do [width + length, length + height, height + width] |> Enum.min() diff --git a/lib/advent_of_code.ex b/lib/advent_of_code.ex index 801659b..26954ec 100644 --- a/lib/advent_of_code.ex +++ b/lib/advent_of_code.ex @@ -6,7 +6,7 @@ defmodule AdventOfCode do @latest_year 2023 @type year() :: 2015 | 2016 | 2017 | 2018 | 2019 | 2020 | 2021 | 2022 | 2023 - @type day() :: non_neg_integer() + @type day() :: pos_integer() @doc """ Returns the latest year solved. diff --git a/lib/helpers/input_reader.ex b/lib/helpers/input_reader.ex index 180be6e..e197938 100644 --- a/lib/helpers/input_reader.ex +++ b/lib/helpers/input_reader.ex @@ -10,7 +10,7 @@ defmodule AdventOfCode.Helpers.InputReader do is configurable because some AoC problems (i.e. Year 2017 day 19) has significant leading or trailing space(s) """ - @spec read_from_file(non_neg_integer(), non_neg_integer(), boolean()) :: binary() + @spec read_from_file(pos_integer(), pos_integer(), boolean()) :: binary() def read_from_file(year, day, trim \\ true) do case {trim, File.read!("#{@input_dir}/#{year}_#{day}.txt")} do {true, data} -> String.trim(data)