From 42f56993f11ba33056b1522371c2a93b94657e10 Mon Sep 17 00:00:00 2001 From: Michael Yockey Date: Sat, 13 Dec 2025 15:44:10 -0500 Subject: [PATCH] Formatted --- lib/year_2025/day1.exs | 11 ++++++----- lib/year_2025/dial.ex | 23 +++++++++++++---------- test/year_2025/dial_test.exs | 4 ++-- 3 files changed, 21 insertions(+), 17 deletions(-) diff --git a/lib/year_2025/day1.exs b/lib/year_2025/day1.exs index 1c129c1..ee6bbcc 100644 --- a/lib/year_2025/day1.exs +++ b/lib/year_2025/day1.exs @@ -1,8 +1,9 @@ -filepath = Path.join([File.cwd!, "lib", "year_2025", "day1_input.txt"]) -ops = File.stream!(filepath) -|>Stream.map(&String.trim_trailing/1) -|>Enum.to_list +filepath = Path.join([File.cwd!(), "lib", "year_2025", "day1_input.txt"]) + +ops = + File.stream!(filepath) + |> Stream.map(&String.trim_trailing/1) + |> Enum.to_list() {_, zeroes} = AdventOfCode.Year2025.Dial.rotate(ops) IO.puts(zeroes) - diff --git a/lib/year_2025/dial.ex b/lib/year_2025/dial.ex index ed108a2..2b1802a 100644 --- a/lib/year_2025/dial.ex +++ b/lib/year_2025/dial.ex @@ -3,17 +3,18 @@ defmodule AdventOfCode.Year2025.Dial do def rotate(operations), do: rotate(50, operations, 0) # When no operations remain, return the number of zeroes - def rotate(index, [], zeroes), do: { index, zeroes } + def rotate(index, [], zeroes), do: {index, zeroes} # Compute the new dial position def rotate(index, [head | tail], zeroes) do - { new_index, _crosses } = case head do - "R" <> number -> rotate_right(index, String.to_integer(number)) - "L" <> number -> rotate_left(index, String.to_integer(number)) - end + {new_index, _crosses} = + case head do + "R" <> number -> rotate_right(index, String.to_integer(number)) + "L" <> number -> rotate_left(index, String.to_integer(number)) + end case new_index do - 0 -> rotate(new_index, tail, zeroes+1) + 0 -> rotate(new_index, tail, zeroes + 1) _ -> rotate(new_index, tail, zeroes) end end @@ -21,18 +22,20 @@ defmodule AdventOfCode.Year2025.Dial do defp rotate_right(index, number) do crosses = div(number, 100) diff = index + rem(number, 100) + case diff do - diff when diff <= 99 -> { diff, crosses } - diff when diff > 99 -> { diff - 100, crosses + 1 } + diff when diff <= 99 -> {diff, crosses} + diff when diff > 99 -> {diff - 100, crosses + 1} end end defp rotate_left(index, number) do crosses = div(number, 100) diff = index - rem(number, 100) + case diff do - diff when diff >= 0 -> { diff, crosses } - diff when diff < 0 -> { diff + 100, crosses + 1 } + diff when diff >= 0 -> {diff, crosses} + diff when diff < 0 -> {diff + 100, crosses + 1} end end end diff --git a/test/year_2025/dial_test.exs b/test/year_2025/dial_test.exs index 18ac6b6..cc813ec 100644 --- a/test/year_2025/dial_test.exs +++ b/test/year_2025/dial_test.exs @@ -4,7 +4,7 @@ defmodule AdventOfCode.Year2025.DialTest do import AdventOfCode.Year2025.Dial test "dial starts at 50" do - { index, _ } = rotate([]) + {index, _} = rotate([]) assert index == 50 end @@ -15,7 +15,7 @@ defmodule AdventOfCode.Year2025.DialTest do test "rotate left decrements index" do {index, _} = rotate(["L1"]) - assert index ==49 + assert index == 49 end test "increments zero crossings when landing on zero" do