# 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)
```