this repo has no description
at master 1.9 kB view raw
1<!-- livebook:{"persist_outputs":true} --> 2 3# Day 06 4 5```elixir 6Mix.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""" 27Time: 7 15 30 28Distance: 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 40defmodule 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 53end 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 65puzzle_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) 72end) 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``` 8132076 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 98Day06.solve(t, d) 99``` 100 101<!-- livebook:{"output":true} --> 102 103``` 10434278221 105``` 106 107<!-- livebook:{"offset":1728,"stamp":{"token":"XCP.RVwRJJq0k3Evn9IAmQDOmuVfBQ2xs0pbIqwAVIMLYEO8Olj2RUttefJ6ky9G2BD-EzyDh-ZjERuBL8PVkFPkYz8g7hdsY0keFA-TEIL4GC3n2j_IwPT1JHFDQ0FwiPBw5g","version":2}} -->