this repo has no description
1# Day 01 2 3```elixir 4Mix.install([:kino_aoc]) 5``` 6 7## Setup 8 9<!-- livebook:{"attrs":"eyJhc3NpZ25fdG8iOiJwdXp6bGVfaW5wdXQiLCJkYXkiOiIxIiwic2Vzc2lvbl9zZWNyZXQiOiJBRFZFTlRfT0ZfQ09ERV9TRVNTSU9OIiwieWVhciI6IjIwMjUifQ","chunks":null,"kind":"Elixir.KinoAOC.HelperCell","livebook_object":"smart_cell"} --> 10 11```elixir 12{:ok, puzzle_input} = 13 KinoAOC.download_puzzle("2025", "1", System.fetch_env!("LB_ADVENT_OF_CODE_SESSION")) 14``` 15 16```elixir 17instructions = 18 puzzle_input 19 |> String.split("\n", trim: true) 20 |> Enum.map(fn <<dir>> <> rest -> 21 num = String.to_integer(rest) 22 23 if dir == ?R do 24 {div(num, 100), rem(num, 100)} 25 else 26 {div(num, 100), -rem(num, 100)} 27 end 28 end) 29``` 30 31## Part 1 32 33```elixir 34Enum.reduce(instructions, {50, 0}, fn {_rot, val}, {curr, sum} -> 35 next = Integer.mod(curr + val, 100) 36 37 {next, sum + if(next == 0, do: 1, else: 0)} 38end) 39|> elem(1) 40``` 41 42## Part 2 43 44```elixir 45<<0x434C49434B::40>> 46``` 47 48```elixir 49Enum.reduce(instructions, {50, 0}, fn {rot, val}, {curr, sum} -> 50 next = curr + val 51 52 pass = 53 cond do 54 curr == 0 and next < 0 -> 0 55 next not in 0..99 -> 1 56 rem(next, 100) == 0 -> 1 57 true -> 0 58 end 59 60 {Integer.mod(next, 100), sum + pass + rot} 61end) 62|> elem(1) 63``` 64 65<!-- livebook:{"offset":1234,"stamp":{"token":"XCP.CwH20tHaK8kU6dohgq36CnaY2nnD-3NQc7aO6IAmymU5SEl9dLhm1IihwzVAgdcKHOfAxiDSdAIr5aTfqXWdOCvQRqJrJVUwuKBpAhQvvj9HOgnXBEgEvZz0r_CMSDSOvw","version":2}} -->