# Day 06 ```elixir Mix.install([:kino_aoc]) ``` ## Section ```elixir {:ok, puzzle_input} = KinoAOC.download_puzzle("2023", "6", System.fetch_env!("LB_ADVENT_OF_CODE_SESSION")) ``` ``` {:ok, "Time: 44 80 65 72\nDistance: 208 1581 1050 1102"} ``` ```elixir # puzzle_input = """ Time: 7 15 30 Distance: 9 40 200 """ |> String.trim() ``` ``` "Time: 7 15 30\nDistance: 9 40 200" ``` ```elixir defmodule Day06 do def solve(t, d) do delta = t ** 2 - 4 * d sq_delta = :math.sqrt(delta) diff = if sq_delta == floor(sq_delta), do: 1, else: 0 x1 = (-t + sq_delta) / -2 x2 = (-t - sq_delta) / -2 ceil(x2) - ceil(x1) - diff end end ``` ``` {:module, Day06, <<70, 79, 82, 49, 0, 0, 8, ...>>, {:solve, 2}} ``` ## Part 1 ```elixir puzzle_input |> String.split("\n") |> Enum.map(fn line -> line |> String.split(" ", trim: true) |> tl() |> Enum.map(&String.to_integer/1) end) |> Enum.zip() |> Enum.map(fn {t, d} -> Day06.solve(t, d) end) |> Enum.product() ``` ``` 32076 ``` ## Part 2 ```elixir [t, d] = puzzle_input |> String.split("\n") |> Enum.map(fn line -> line |> String.split(" ", trim: true) |> tl() |> Enum.join() |> String.to_integer() end) Day06.solve(t, d) ``` ``` 34278221 ```