<turbo-stream action="append" target="posts_list"><template>    <div class="postbit" id="348214" data-post-id="348214">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="jswanner" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/jswanner/120/24585_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  jswanner
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I used NimbleParsec to build a parser:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">defmodule Parser do
  import NimbleParsec

  disable =
    ignore(string("don't()"))
    |&gt; tag(:disable)

  enable =
    ignore(string("do()"))
    |&gt; tag(:enable)

  operand = integer(max: 3, min: 1)

  mul =
    ignore(string("mul("))
    |&gt; concat(operand)
    |&gt; ignore(string(","))
    |&gt; concat(operand)
    |&gt; ignore(string(")"))
    |&gt; tag(:mul)

  instruction = choice([disable, enable, mul])

  instructions =
    eventually(instruction)
    |&gt; repeat()

  defparsec(:parse, instructions |&gt; eventually(eos()))
end
</code></pre>
<p><a href="https://github.com/jswanner/aoc/blob/main/2024/day-03.livemd" class="onebox" target="_blank" rel="noopener nofollow ugc">https://github.com/jswanner/aoc/blob/main/2024/day-03.livemd</a></p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="348214" data-batch-url="/posts/batch_likers">
                        5
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/advent-of-code-2024-day-3/67837/22">Post #21</a>
	                </div>
	            </div>
              <div id="likers-container-348214" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="348214"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #21"></div>
  </section>
</div>
    <div class="postbit" id="348218" data-post-id="348218">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="cblavier" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/cblavier/120/29763_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  cblavier
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Today I learned <code>Regex.split</code> with <code>include_captures: true</code> option <img src="https://forum.elixirforum.com/images/emoji/apple/mage.png?v=15" title=":mage:" class="emoji" alt=":mage:" loading="lazy" width="20" height="20"></p>
<p>Part1</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">defmodule Advent.Y2024.Day03.Part1 do
  def run(puzzle) do
    Regex.scan(~r|mul\(\d+,\d+\)|, puzzle)
    |&gt; Enum.map(fn [s] -&gt; evaluate_mul(s) end)
    |&gt; Enum.sum()
  end

  def evaluate_mul(s) do
    [_, n1, n2, _] = String.split(s, ["(", ",", ")"])
    String.to_integer(n1) * String.to_integer(n2)
  end
end
</code></pre>
<p>Part2</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">defmodule Advent.Y2024.Day03.Part2 do
  alias Advent.Y2024.Day03.Part1

  def run(puzzle) do
    Regex.split(~r/mul\(\d+,\d+\)|(do\(\))|(don't\(\))/, puzzle, include_captures: true)
    |&gt; Enum.reduce(%{sum: 0, enabled: true}, fn
      "do()", acc -&gt;
        %{acc | enabled: true}

      "don't()", acc -&gt;
        %{acc | enabled: false}

      s, acc = %{enabled: true, sum: sum} -&gt;
        if String.match?(s, ~r|mul\(\d+,\d+\)|) do
          %{acc | sum: sum + Part1.evaluate_mul(s)}
        else
          acc
        end

      _, acc -&gt;
        acc
    end)
    |&gt; Map.get(:sum)
  end
end
</code></pre> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="348218" data-batch-url="/posts/batch_likers">
                        2
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/advent-of-code-2024-day-3/67837/23">Post #22</a>
	                </div>
	            </div>
              <div id="likers-container-348218" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="348218"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #22"></div>
  </section>
</div>
    <div class="postbit" id="348220" data-post-id="348220">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="ken-kost" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/ken-kost/120/40209_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  ken-kost
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I made codepoints and used extensive pattern matching instead of regex. <img src="https://forum.elixirforum.com/images/emoji/apple/sweat_smile.png?v=15" title=":sweat_smile:" class="emoji" alt=":sweat_smile:" loading="lazy" width="20" height="20"></p>
<pre data-code-wrap="elixir"><code class="lang-elixir">  defp find_muls([], solution), do: solution

  defp find_muls(["m", "u", "l", "(", a1, ",", b1, ")" | rest], solution) do
    case {Integer.parse(a1), Integer.parse(b1)} do
      {{n1, _}, {n2, _}} -&gt; find_muls(rest, solution + n1 * n2)
      _ -&gt; find_muls(rest, solution)
    end
  end

  defp find_muls(["m", "u", "l", "(", a1, ",", b1, b2, ")" | rest], solution) do
    case {Integer.parse(a1), Integer.parse(b1 &lt;&gt; b2)} do
      {{n1, _}, {n2, _}} -&gt; find_muls(rest, solution + n1 * n2)
      _ -&gt; find_muls(rest, solution)
    end
  end

...
</code></pre>
<p>Posting just a part of it, it’s too big. <img src="https://forum.elixirforum.com/images/emoji/apple/japanese_goblin.png?v=15" title=":japanese_goblin:" class="emoji" alt=":japanese_goblin:" loading="lazy" width="20" height="20"><br>
For part 2 I added a factor argument that goes to 1 when do is pattern matched, goes to 0 when don’t. Needless to say, I’m not satisfied with my solution. <img src="https://forum.elixirforum.com/images/emoji/apple/bug.png?v=15" title=":bug:" class="emoji" alt=":bug:" loading="lazy" width="20" height="20"></p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="348220" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/advent-of-code-2024-day-3/67837/24">Post #23</a>
	                </div>
	            </div>
              <div id="likers-container-348220" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="348220"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #23"></div>
  </section>
</div>
    <div class="postbit" id="348227" data-post-id="348227">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="Aetherus" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/Aetherus/120/17203_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  Aetherus
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I once wrote a lexer using <code>Regex.split</code> with <code>include_captures: true</code> and <code>parts: 2, trim: false</code>.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="348227" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/advent-of-code-2024-day-3/67837/25">Post #24</a>
	                </div>
	            </div>
              <div id="likers-container-348227" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="348227"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #24"></div>
  </section>
</div>
    <div class="postbit" id="348228" data-post-id="348228">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="jarlah" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/jarlah/120/24789_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  jarlah
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Part1 i wont care about sharing. But Part2., i tried to scan over this thread and couldnt find something similar, but the solution i found was a fold left and pattern matching on functions and a tuple accumulator</p>
<p><a href="https://github.com/jarlah/advent_of_code/blob/master/lib/2024/day_3/Part2.ex" class="onebox" target="_blank" rel="noopener nofollow ugc">https://github.com/jarlah/advent_of_code/blob/master/lib/2024/day_3/Part2.ex</a></p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="348228" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/advent-of-code-2024-day-3/67837/26">Post #25</a>
	                </div>
	            </div>
              <div id="likers-container-348228" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="348228"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #25"></div>
  </section>
</div>
    <div class="postbit" id="348230" data-post-id="348230">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="jarlah" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/jarlah/120/24789_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  jarlah
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>actually day3 part2 was pretty cool task &lt;3</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="348230" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/advent-of-code-2024-day-3/67837/27">Post #26</a>
	                </div>
	            </div>
              <div id="likers-container-348230" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="348230"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #26"></div>
  </section>
</div>
    <div class="postbit" id="348231" data-post-id="348231">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="jarlah" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/jarlah/120/24789_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  jarlah
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>really liked your part2 impl <img src="https://forum.elixirforum.com/images/emoji/apple/slight_smile.png?v=15" title=":slight_smile:" class="emoji" alt=":slight_smile:" loading="lazy" width="20" height="20"> &lt;3</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="348231" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/advent-of-code-2024-day-3/67837/28">Post #27</a>
	                </div>
	            </div>
              <div id="likers-container-348231" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="348231"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #27"></div>
  </section>
</div>
    <div class="postbit" id="348238" data-post-id="348238">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="BartOtten" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/BartOtten/120/25440_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  BartOtten
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Took some time to fix my initial code; but really wanted to make it within the cutoff limit of the code box at this forum ;). <strong>24</strong> lines, with official formatting that is.</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">defmodule Aoc2024.Solutions.Y24.Day03 do
  alias AoC.Input

  def parse(input, _part), do: Input.read!(input)

  def part_one(problem), do: problem |&gt; sanitize(~w(mul)) |&gt; exec_calc() |&gt; elem(1)

  def part_two(problem), do: problem |&gt; sanitize(~w(mul do don't)) |&gt; exec_calc() |&gt; elem(1)

  defp sanitize(input, keywords),
    do:
      ("(" &lt;&gt; Enum.join(keywords, "|") &lt;&gt; ")\\((?:([0-9]{1,3}),([0-9]{1,3}))?\\)")
      |&gt; Regex.compile!()
      |&gt; Regex.scan(input, capture: :all_but_first)

  defp exec_calc(input),
    do:
      Enum.reduce(input, {:active, 0}, fn
        ["mul", x, y], {:active, sum} -&gt; {:active, sum + String.to_integer(x) * String.to_integer(y)}
        ["do"], {_, sum} -&gt; {:active, sum}
        ["don't"], {_, sum} -&gt; {:inactive, sum}
        _, acc -&gt; acc
      end)
end
</code></pre> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="348238" data-batch-url="/posts/batch_likers">
                        2
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/advent-of-code-2024-day-3/67837/29">Post #28</a>
	                </div>
	            </div>
              <div id="likers-container-348238" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="348238"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #28"></div>
  </section>
</div>
    <div class="postbit" id="348251" data-post-id="348251">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="riotmole" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/riotmole/120/36725_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  riotmole
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Ok. At least part1 was way more easy for me than yesterday. Still working on part2</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">defmodule MyApp.Solutions.Y24.Day03 do
  alias AoC.Input

  def parse(input, _part) do
    garbage = Input.read!(input)
    Regex.scan(~r/mul\((\d+),(\d+)\)/, garbage)
  end

  def part_one(problem) do
    problem
    |&gt; List.foldl(0, fn([_, x, y], acc) -&gt;
     acc + String.to_integer(x) * String.to_integer(y)
    end)
  end
</code></pre> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="348251" data-batch-url="/posts/batch_likers">
                        3
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/advent-of-code-2024-day-3/67837/30">Post #29</a>
	                </div>
	            </div>
              <div id="likers-container-348251" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="348251"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #29"></div>
  </section>
</div>
    <div class="postbit" id="348252" data-post-id="348252">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="jarlah" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/jarlah/120/24789_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  jarlah
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>i love how compact it is &lt;3</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="348252" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/advent-of-code-2024-day-3/67837/31">Post #30</a>
	                </div>
	            </div>
              <div id="likers-container-348252" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="348252"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #30"></div>
  </section>
</div>
</template></turbo-stream><turbo-stream action="replace" target="load-more-container"><template><div id="load-more-container" class="load-more-container">
    <a class="load-more-button" data-turbo-stream="true" href="/topics/67837/load_more?page=4">Load more posts (27 remaining)</a>
</div></template></turbo-stream>