this repo has no description

Improve performance od day 07 and fix day 06 title

hauleth.dev 807c3e37 ce68d8fd

verified
Changed files
+18 -16
2024
+2 -2
2024/day06.livemd
··· 1 1 <!-- livebook:{"persist_outputs":true} --> 2 2 3 - # Untitled notebook 3 + # Day 06 4 4 5 5 ```elixir 6 6 Mix.install([:kino_aoc, :arrays]) ··· 184 184 4432 185 185 ``` 186 186 187 - <!-- livebook:{"offset":7387,"stamp":{"token":"XCP.Wj_YFc-zYzAPEIaLCGnT6vtMYoDgv-DJ3xiuAVdHZPkMwNpP5jrmLW4LBe4lzRgNN75xF-FYACOKdzd82Z71i5y8yC5Wmd072w6qDXxmygH8fZvTOAZM02UZvvg20b5Yhv0","version":2}} --> 187 + <!-- livebook:{"offset":7376,"stamp":{"token":"XCP.Bv-aM7sns5Kb69SQdY4giDFl6fWiJ5L3lnISxUUjGi_DgTgM_r5rl-y8sy2RLl-KbEtOmW99QQsGItLYJhKJmkOZ5pPZ_7Aw3BhkL_ap8RnW8UkOt_OsNdpqoZT7FEDtmFQ","version":2}} -->
+16 -14
2024/day07.livemd
··· 55 55 56 56 ``` 57 57 warning: code block contains unused literal "190: 10 19\n3267: 81 40 27\n83: 17 5\n156: 15 6\n7290: 6 8 6 15\n161011: 16 10 13\n192: 17 8 14\n21037: 9 7 18 13\n292: 11 6 16 20\n" (remove the literal or assign it to _ to avoid warnings) 58 - └─ Workspace/hauleth/advent-of-code/2024/day07.livemd#cell:5stfqvjgwz4d5v5a:1 58 + └─ Workspace/hauleth/advent-of-code/2024/day07.livemd#cell:7pxlqq2wa3oqdwfr:1 59 59 60 60 ``` 61 61 ··· 123 123 defmodule Eq.P1 do 124 124 def possible?(0, []), do: true 125 125 def possible?(a, [a]), do: true 126 - def possible?(0, [_|_]), do: false 126 + def possible?(0, [_ | _]), do: false 127 127 def possible?(_, []), do: false 128 128 def possible?(a, _) when a < 0, do: false 129 129 ··· 146 146 |> Enum.filter(fn {target, vals} -> 147 147 Eq.P1.possible?(target, Enum.reverse(vals)) 148 148 end) 149 - |> Enum.reduce(0, & elem(&1, 0) + &2) 149 + |> Enum.reduce(0, &(elem(&1, 0) + &2)) 150 150 ``` 151 151 152 152 <!-- livebook:{"output":true} --> ··· 161 161 defmodule Eq.P2 do 162 162 def possible?(a, [hd | rest]), do: possible?(a, hd, rest) 163 163 164 - def possible?(a, a, []), do: true 165 - def possible?(_, _, []), do: false 166 - def possible?(a, b, _) when b > a, do: false 164 + defp possible?(a, a, []), do: true 165 + defp possible?(_, _, []), do: false 166 + defp possible?(a, b, _) when b > a, do: false 167 167 168 - def possible?(target, curr, [a | rest]) do 168 + defp possible?(target, curr, [a | rest]) do 169 169 possible?(target, concat(curr, a), rest) or 170 - possible?(target, curr + a, rest) or 171 - possible?(target, curr * a, rest) 170 + possible?(target, curr * a, rest) or 171 + possible?(target, curr + a, rest) 172 172 end 173 173 174 - def concat(a, b) do 175 - String.to_integer("#{a}#{b}") 176 - end 174 + defp concat(a, b), do: a * l10(b) + b 175 + 176 + defp l10(n) when n >= 100, do: 1000 177 + defp l10(n) when n >= 10, do: 100 178 + defp l10(_), do: 10 177 179 end 178 180 ``` 179 181 180 182 <!-- livebook:{"output":true} --> 181 183 182 184 ``` 183 - {:module, Eq.P2, <<70, 79, 82, 49, 0, 0, 10, ...>>, {:concat, 2}} 185 + {:module, Eq.P2, <<70, 79, 82, 49, 0, 0, 9, ...>>, {:l10, 1}} 184 186 ``` 185 187 186 188 ```elixir ··· 200 202 264184041398847 201 203 ``` 202 204 203 - <!-- livebook:{"offset":9239,"stamp":{"token":"XCP.jahJhDMdAl3PqiPODSOJfIpJq_WE2I1sNvBUcNkY-FP-lUYFrioZW8V3FxbSGrS_-uFSLbRAfdSuAPnnK09vkzrcdjq7uz6-aRoxHbpcVgFwLC_l-sbpUMFFHwKci93vcoE","version":2}} --> 205 + <!-- livebook:{"offset":9317,"stamp":{"token":"XCP.DCDL30p1jz3L9vRDdQ5EJLc3r7y1DTsVhQ3GXFK_huvoEXqgYu2TTOfTq8AFYpt5W6fEIo4MvfrnHttbqS-z4SjRkT7WM09v09mZ_FeyqstWzLMCK_oNqhrrdwPPv5BG_8c","version":2}} -->