# Day 01 ```elixir Mix.install([:kino_aoc]) ``` ## Setup ```elixir {:ok, puzzle_input} = KinoAOC.download_puzzle("2025", "1", System.fetch_env!("LB_ADVENT_OF_CODE_SESSION")) ``` ```elixir instructions = puzzle_input |> String.split("\n", trim: true) |> Enum.map(fn <> <> rest -> num = String.to_integer(rest) if dir == ?R do {div(num, 100), rem(num, 100)} else {div(num, 100), -rem(num, 100)} end end) ``` ## Part 1 ```elixir Enum.scan(instructions, 50, fn {_rot, val}, curr -> Integer.mod(curr + val, 100) end) |> Enum.count(& &1 == 0) ``` ## Part 2 ```elixir <<0x434C49434B::40>> ``` ```elixir Enum.reduce(instructions, {50, 0}, fn {rot, val}, {curr, sum} -> next = curr + val pass = cond do curr == 0 and next < 0 -> 0 next not in 0..99 -> 1 rem(next, 100) == 0 -> 1 true -> 0 end {Integer.mod(next, 100), sum + pass + rot} end) |> elem(1) ```