this repo has no description

2024 day 01

hauleth.dev dff434f3 8181ca71

verified
Changed files
+49
2024
+49
2024/day01.livemd
··· 1 + # Day 01 2 + 3 + ```elixir 4 + Mix.install([:kino_aoc]) 5 + ``` 6 + 7 + ## Section 8 + 9 + <!-- livebook:{"attrs":"eyJhc3NpZ25fdG8iOiJwdXp6bGVfaW5wdXQiLCJkYXkiOiIxIiwic2Vzc2lvbl9zZWNyZXQiOiJBRFZFTlRfT0ZfQ09ERV9TRVNTSU9OIiwieWVhciI6IjIwMjQifQ","chunks":null,"kind":"Elixir.KinoAOC.HelperCell","livebook_object":"smart_cell"} --> 10 + 11 + ```elixir 12 + {:ok, puzzle_input} = 13 + KinoAOC.download_puzzle("2024", "1", System.fetch_env!("LB_ADVENT_OF_CODE_SESSION")) 14 + ``` 15 + 16 + ```elixir 17 + {left, right} = 18 + puzzle_input 19 + |> String.split("\n", trim: true) 20 + |> Enum.map(fn line -> 21 + line 22 + |> String.split(" ", trim: true) 23 + |> Enum.map(&String.to_integer/1) 24 + |> List.to_tuple() 25 + end) 26 + |> Enum.unzip() 27 + ``` 28 + 29 + ## Part 1 30 + 31 + ```elixir 32 + left 33 + |> Enum.sort() 34 + |> Enum.zip_with(Enum.sort(right), &abs(&1 - &2)) 35 + |> Enum.sum() 36 + ``` 37 + 38 + ## Part 2 39 + 40 + ```elixir 41 + freq_left = Enum.frequencies(left) 42 + freq_right = Enum.frequencies(right) 43 + 44 + freq_left 45 + |> Enum.map(fn {id, n} -> id * n * Map.get(freq_right, id, 0) end) 46 + |> Enum.sum() 47 + ``` 48 + 49 + <!-- livebook:{"offset":946,"stamp":{"token":"XCP.yoOGtjwRQqzJzwUJIU8whgzKrfM5itcWL9AJcWUmjQHyohqeB9F_WH6pTqnTtTm4QERP5feEfLn6Vkjen95d23tI3VO-e9goRMqIc5jshNWfH59tFX7lzO2M7QPQ28nKicI","version":2}} -->