this repo has no description
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}} -->