this repo has no description

Day 06

hauleth.dev fceb5e95 4b718428

verified
Changed files
+107
2023
+107
2023/day06.livemd
··· 1 + <!-- livebook:{"persist_outputs":true} --> 2 + 3 + # Day 06 4 + 5 + ```elixir 6 + Mix.install([:kino_aoc]) 7 + ``` 8 + 9 + ## Section 10 + 11 + <!-- livebook:{"attrs":{"assign_to":"puzzle_input","day":"6","session_secret":"ADVENT_OF_CODE_SESSION","year":"2023"},"chunks":null,"kind":"Elixir.KinoAOC.HelperCell","livebook_object":"smart_cell"} --> 12 + 13 + ```elixir 14 + {:ok, puzzle_input} = 15 + KinoAOC.download_puzzle("2023", "6", System.fetch_env!("LB_ADVENT_OF_CODE_SESSION")) 16 + ``` 17 + 18 + <!-- livebook:{"output":true} --> 19 + 20 + ``` 21 + {:ok, "Time: 44 80 65 72\nDistance: 208 1581 1050 1102"} 22 + ``` 23 + 24 + ```elixir 25 + # puzzle_input = 26 + """ 27 + Time: 7 15 30 28 + Distance: 9 40 200 29 + """ 30 + |> String.trim() 31 + ``` 32 + 33 + <!-- livebook:{"output":true} --> 34 + 35 + ``` 36 + "Time: 7 15 30\nDistance: 9 40 200" 37 + ``` 38 + 39 + ```elixir 40 + defmodule Day06 do 41 + def solve(t, d) do 42 + delta = t ** 2 - 4 * d 43 + 44 + sq_delta = :math.sqrt(delta) 45 + 46 + diff = if sq_delta == floor(sq_delta), do: 1, else: 0 47 + 48 + x1 = (-t + sq_delta) / -2 49 + x2 = (-t - sq_delta) / -2 50 + 51 + ceil(x2) - ceil(x1) - diff 52 + end 53 + end 54 + ``` 55 + 56 + <!-- livebook:{"output":true} --> 57 + 58 + ``` 59 + {:module, Day06, <<70, 79, 82, 49, 0, 0, 8, ...>>, {:solve, 2}} 60 + ``` 61 + 62 + ## Part 1 63 + 64 + ```elixir 65 + puzzle_input 66 + |> String.split("\n") 67 + |> Enum.map(fn line -> 68 + line 69 + |> String.split(" ", trim: true) 70 + |> tl() 71 + |> Enum.map(&String.to_integer/1) 72 + end) 73 + |> Enum.zip() 74 + |> Enum.map(fn {t, d} -> Day06.solve(t, d) end) 75 + |> Enum.product() 76 + ``` 77 + 78 + <!-- livebook:{"output":true} --> 79 + 80 + ``` 81 + 32076 82 + ``` 83 + 84 + ## Part 2 85 + 86 + ```elixir 87 + [t, d] = 88 + puzzle_input 89 + |> String.split("\n") 90 + |> Enum.map(fn line -> 91 + line 92 + |> String.split(" ", trim: true) 93 + |> tl() 94 + |> Enum.join() 95 + |> String.to_integer() 96 + end) 97 + 98 + Day06.solve(t, d) 99 + ``` 100 + 101 + <!-- livebook:{"output":true} --> 102 + 103 + ``` 104 + 34278221 105 + ``` 106 + 107 + <!-- livebook:{"offset":1728,"stamp":{"token":"XCP.RVwRJJq0k3Evn9IAmQDOmuVfBQ2xs0pbIqwAVIMLYEO8Olj2RUttefJ6ky9G2BD-EzyDh-ZjERuBL8PVkFPkYz8g7hdsY0keFA-TEIL4GC3n2j_IwPT1JHFDQ0FwiPBw5g","version":2}} -->