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


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I used ranges as well. Part 1 and 2 are basically <code>contains?</code> and <code>overlaps?</code> for ranges. Did the first on my own, for part 2 <code>Range.disjoint?</code> is the opposite to <code>overlaps?</code>, so it does the job. Contains can be checked just by looking at the edges of the ranges.</p>
<details>
<summary>
Solution</summary>
<pre data-code-wrap="elixir"><code class="lang-elixir">defmodule Day4 do
  def sum_number_of_contained_assignments(text) do
    text
    |&gt; String.split("\n")
    |&gt; Enum.reject(&amp;(&amp;1 == ""))
    |&gt; Enum.filter(&amp;contained_assignments?/1)
    |&gt; length()
  end

  def sum_number_of_overlapping_assignments(text) do
    text
    |&gt; String.split("\n")
    |&gt; Enum.reject(&amp;(&amp;1 == ""))
    |&gt; Enum.filter(&amp;overlapping_assignments?/1)
    |&gt; length()
  end

  defp contained_assignments?(assignments) do
    {elf_a_range, elf_b_range} = parse_pair_ranges(assignments)
    contains?(elf_a_range, elf_b_range) or contains?(elf_b_range, elf_a_range)
  end

  defp overlapping_assignments?(assignments) do
    {elf_a_range, elf_b_range} = parse_pair_ranges(assignments)
    !Range.disjoint?(elf_a_range, elf_b_range)
  end

  defp parse_pair_ranges(assignments) do
    [elf_a_assignment, elf_b_assignment] = String.split(assignments, ",", trim: true, parts: 2)
    elf_a_range = to_range(elf_a_assignment)
    elf_b_range = to_range(elf_b_assignment)
    {elf_a_range, elf_b_range}
  end

  defp to_range(assignment) do
    [from, to] = String.split(assignment, "-", trim: true, parts: 2)
    from_int = String.to_integer(from)
    to_int = String.to_integer(to)
    from_int..to_int//1
  end

  defp contains?(fa..ta//1, fb..tb//1) do
    fa &lt;= fb and ta &gt;= tb
  end
end
</code></pre>
</details> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="270399" 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-2022-day-4/52239/12">Post #11</a>
	                </div>
	            </div>
              <div id="likers-container-270399" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="270399"
                     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 #11"></div>
  </section>
</div>
    <div class="postbit" id="270403" data-post-id="270403">
  <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>My simple solution:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">defmodule Day04 do
  def part1(input_path) do
    input_path
    |&gt; File.stream!()
    |&gt; Stream.map(&amp;String.trim/1)
    |&gt; Stream.map(&amp;String.split(&amp;1, ~r/\D/, global: true))
    |&gt; Stream.map(fn x -&gt; Enum.map(x, &amp;String.to_integer/1) end)
    |&gt; Enum.count(fn [start1, end1, start2, end2] -&gt;
      (start1 &lt;= start2 and end1 &gt;= end2) or
      (start1 &gt;= start2 and end1 &lt;= end2)
    end)
  end

  def part2(input_path) do
    input_path
    |&gt; File.stream!()
    |&gt; Stream.map(&amp;String.trim/1)
    |&gt; Stream.map(&amp;String.split(&amp;1, ~r/\D/, global: true))
    |&gt; Stream.map(fn x -&gt; Enum.map(x, &amp;String.to_integer/1) end)
    |&gt; Enum.count(fn [start1, end1, start2, end2] -&gt;
      start1 &lt;= end2 and start2 &lt;= end1
    end)
  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="270403" data-batch-url="/posts/batch_likers">
                        4
                      </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-2022-day-4/52239/13">Post #12</a>
	                </div>
	            </div>
              <div id="likers-container-270403" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="270403"
                     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 #12"></div>
  </section>
</div>
    <div class="postbit" id="270404" data-post-id="270404">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Advent of code always reminds me what a great “stdlib” Elixir comes with!</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">  parsed = 
    input
    |&gt; String.split("\n", trim: true)
    |&gt; Enum.flat_map(&amp;String.split(&amp;1, ~r/[-,]/))
    |&gt; Enum.map(&amp;String.to_integer/1)
    |&gt; Enum.chunk_every(4)

part1 = Enum.count(parsed, fn [ax, ay, bx, by] -&gt; (ax &lt;= bx and ay &gt;= by) or (ax &gt;= bx and ay &lt;= by) end)
part2 = Enum.count(parsed, fn [ax, ay, bx, by] -&gt; (bx &lt;= ay and by &gt;= ax) end)
</code></pre>
<p>Edit: <a class="mention" href="/u/aetherus" rel="nofollow">@Aetherus</a> you beat me by a few seconds <img src="https://forum.elixirforum.com/images/emoji/apple/wink.png?v=15" title=":wink:" class="emoji" alt=":wink:" 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="270404" data-batch-url="/posts/batch_likers">
                        4
                      </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-2022-day-4/52239/14">Post #13</a>
	                </div>
	            </div>
              <div id="likers-container-270404" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="270404"
                     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 #13"></div>
  </section>
</div>
    <div class="postbit" id="270409" data-post-id="270409">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I am getting the feeling that Advent of Code is written from the mindset of primarily imperative languages, because it feels they’re getting easier with Elixir. <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"> Today’s was just <code>Range</code> and <code>MapSet</code> doing everything. I think today’s is probably the closest to literally just restating the problem description in Elixir. Part two required no edits to the code to solve part one since it just required a different count function. <a href="https://github.com/bmitc/advent-of-code/blob/main/2022/elixir/advent_of_code_2022.livemd#day-4" rel="noopener nofollow ugc">Link to Livebook notebook.</a></p>
<pre data-code-wrap="elixir"><code class="lang-elixir">defmodule Day4 do
  @moduledoc """
  Solutions for Day 4
  """

  @typedoc """
  Represents a pairing of two elf's section assignments. The section assignments
  are represented by Elixir `Range`s.
  """
  @type assignment_pair() :: {Range.t(), Range.t()}

  @doc """
  Parse an assignment pair string into a tuple of section assignment ranges

  ## Examples:
    iex&gt; Day4.parse_assignment_pair("2-4,6-8")
    {2..4, 6..8}
  """
  @spec parse_assignment_pair(String.t()) :: assignment_pair()
  def parse_assignment_pair(string) do
    [[a_start, a_end], [b_start, b_end]] =
      for range &lt;- String.split(string, ",", trim: true) do
        String.split(range, "-", trim: true)
        |&gt; Enum.map(&amp;String.to_integer/1)
      end

    {Range.new(a_start, a_end), Range.new(b_start, b_end)}
  end

  @doc """
  List of all the assignment pairs
  """
  @spec assignment_pairs() :: [assignment_pair()]
  def assignment_pairs() do
    Utilities.read_data(4)
    |&gt; Enum.map(&amp;parse_assignment_pair/1)
  end

  @doc """
  Determines if range 1 is a subset of range 2
  """
  @spec range_subset?(Range.t(), Range.t()) :: boolean()
  def range_subset?(range1, range2) do
    MapSet.subset?(MapSet.new(range1), MapSet.new(range2))
  end

  @doc """
  Determines if one of the ranges is fully contained in (i.e., a subset of) the other
  """
  @spec range_contained_in_the_other?(Range.t(), Range.t()) :: boolean()
  def range_contained_in_the_other?(range1, range2) do
    range_subset?(range1, range2) or range_subset?(range2, range1)
  end

  def part_one() do
    assignment_pairs()
    |&gt; Enum.count(fn {range1, range2} -&gt; range_contained_in_the_other?(range1, range2) end)
  end

  def part_two() do
    assignment_pairs()
    |&gt; Enum.count(fn {range1, range2} -&gt; !Range.disjoint?(range1, range2) end)
  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="270409" 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-2022-day-4/52239/15">Post #14</a>
	                </div>
	            </div>
              <div id="likers-container-270409" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="270409"
                     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 #14"></div>
  </section>
</div>
    <div class="postbit" id="270412" data-post-id="270412">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="newton-peixoto" src="/assets/icons/user-9f439610.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  newton-peixoto
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Probably not the most performant code but it does the job. Suggestions are appreciated</p>
<p><a href="https://github.com/newton-peixoto/advent-of-code/blob/main/2022/livebooks/day-04.livemd" class="onebox" target="_blank" rel="noopener nofollow ugc">https://github.com/newton-peixoto/advent-of-code/blob/main/2022/livebooks/day-04.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="270412" 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-2022-day-4/52239/16">Post #15</a>
	                </div>
	            </div>
              <div id="likers-container-270412" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="270412"
                     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 #15"></div>
  </section>
</div>
    <div class="postbit" id="270413" data-post-id="270413">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="hst337" src="/assets/icons/user-9f439610.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  hst337
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>One more day for scanning</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">defmodule AOC do
  def traverse(string, number \\ 0, line \\ [], acc \\ 0)
  def traverse("", 0, [], acc), do: acc
  def traverse(string, 0, [r2, l2, r1, l1], acc) do
    cond do
      r1 &lt; l2 -&gt;
        traverse(string, 0, [], acc)

      r2 &lt; l1 -&gt;
        traverse(string, 0, [], acc)

      true -&gt;
        traverse(string, 0, [], acc + 1)
    end
  end
  def traverse(string, number, line, acc) do
    case string do
      &lt;&lt;splitter, tail :: binary&gt;&gt; when splitter in [?-, ?,, ?\n] -&gt;
        traverse(tail, 0, [number | line], acc)

      &lt;&lt;int, tail :: binary&gt;&gt; -&gt;
        traverse(tail, number * 10 + int - ?0, line, acc)

      "" -&gt;
        traverse("", 0, [number | line], acc)

      "\n" -&gt;
        traverse("", 0, [number | line], acc)
    end
  end
end

IO.inspect AOC.traverse IO.read :eof
</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="270413" 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-2022-day-4/52239/17">Post #16</a>
	                </div>
	            </div>
              <div id="likers-container-270413" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="270413"
                     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 #16"></div>
  </section>
</div>
    <div class="postbit" id="270414" data-post-id="270414">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>day04.exs:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">solve = fn oper -&gt;
  "data/04"
  |&gt; File.read!()
  |&gt; String.split(["\n", ",", "-"], trim: true)
  |&gt; Enum.map(&amp;String.to_integer/1)
  |&gt; Enum.chunk_every(4)
  |&gt; Enum.filter(fn [a, b, c, d] -&gt; oper.(c in a..b, d in a..b) or oper.(a in c..d, b in c..d) end)
  |&gt; Enum.count()
end

(&amp;and/2)
|&gt; then(solve)
|&gt; tap(&amp;IO.puts("Part 1: #{&amp;1}"))

(&amp;or/2)
|&gt; then(solve)
|&gt; tap(&amp;IO.puts("Part 2: #{&amp;1}"))
</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="270414" data-batch-url="/posts/batch_likers">
                        4
                      </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-2022-day-4/52239/18">Post #17</a>
	                </div>
	            </div>
              <div id="likers-container-270414" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="270414"
                     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 #17"></div>
  </section>
</div>
    <div class="postbit" id="270442" data-post-id="270442">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p><a href="https://github.com/stefanluptak/advent-of-code/blob/main/2022/day_04.livemd" class="onebox" target="_blank" rel="noopener nofollow ugc">https://github.com/stefanluptak/advent-of-code/blob/main/2022/day_04.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="270442" 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-2022-day-4/52239/19">Post #18</a>
	                </div>
	            </div>
              <div id="likers-container-270442" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="270442"
                     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 #18"></div>
  </section>
</div>
    <div class="postbit" id="270443" data-post-id="270443">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Part 1</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">input
|&gt; String.split("\n", trim: true)
|&gt; Enum.map(fn line -&gt;
  %{"a1" =&gt; a1, "a2" =&gt; a2, "b1" =&gt; b1, "b2" =&gt; b2} =
    Regex.named_captures(~r/(?&lt;a1&gt;\d+)-(?&lt;a2&gt;\d+),(?&lt;b1&gt;\d+)-(?&lt;b2&gt;\d+)/, line)
  {Range.new(String.to_integer(a1), String.to_integer(a2)), Range.new(String.to_integer(b1), String.to_integer(b2))}
end)
|&gt; Enum.filter(fn {r1, r2} -&gt;
  s1 = MapSet.new(r1)
  s2 = MapSet.new(r2)

  MapSet.subset?(s1, s2) || MapSet.subset?(s2, s1)
end)
|&gt; length()
</code></pre>
<p>Part 2</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">input
|&gt; String.split("\n", trim: true)
|&gt; Enum.map(fn line -&gt;
  %{"a1" =&gt; a1, "a2" =&gt; a2, "b1" =&gt; b1, "b2" =&gt; b2} =
    Regex.named_captures(~r/(?&lt;a1&gt;\d+)-(?&lt;a2&gt;\d+),(?&lt;b1&gt;\d+)-(?&lt;b2&gt;\d+)/, line)
  {Range.new(String.to_integer(a1), String.to_integer(a2)), Range.new(String.to_integer(b1), String.to_integer(b2))}
end)
|&gt; Enum.reject(fn {r1, r2} -&gt;
  s1 = MapSet.new(r1)
  s2 = MapSet.new(r2)

  MapSet.disjoint?(s1, s2)
end)
|&gt; length()
</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="270443" 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-2022-day-4/52239/20">Post #19</a>
	                </div>
	            </div>
              <div id="likers-container-270443" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="270443"
                     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 #19"></div>
  </section>
</div>
    <div class="postbit" id="270487" data-post-id="270487">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>All my answers look the same <img src="https://forum.elixirforum.com/images/emoji/apple/sob.png?v=15" title=":sob:" class="emoji" alt=":sob:" loading="lazy" width="20" height="20"></p>
<p>I thought about using a regex to extract the digits as I see others did with success, but I have a deeply embedded habit of strictly enforcing formatting rules for input like this (although I note <a class="mention" href="/u/egze" rel="nofollow">@egze</a>’s use does appear to enforce them without too much pain). Since there are a known quantity of sections though in a real case I would probably insist the format be changed to use leading zeros <img src="https://forum.elixirforum.com/images/emoji/apple/smile.png?v=15" title=":smile:" class="emoji" alt=":smile:" loading="lazy" width="20" height="20"></p>
<aside class="onebox githubgist" data-onebox-src="https://gist.github.com/tfwright/86cbe0cdac20bc90e67fa488ce855b01">
  <header class="source">

      <a href="https://gist.github.com/tfwright/86cbe0cdac20bc90e67fa488ce855b01" target="_blank" rel="noopener nofollow ugc">gist.github.com</a>
  </header>

  <article class="onebox-body">
    <h4><a href="https://gist.github.com/tfwright/86cbe0cdac20bc90e67fa488ce855b01" target="_blank" rel="noopener nofollow ugc">https://gist.github.com/tfwright/86cbe0cdac20bc90e67fa488ce855b01</a></h4>



  </article>

  <div class="onebox-metadata">
    
    
  </div>

  <div style="clear: both"></div>
</aside>
 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="270487" 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-2022-day-4/52239/21">Post #20</a>
	                </div>
	            </div>
              <div id="likers-container-270487" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="270487"
                     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 #20"></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/52239/load_more?page=3">Load more posts (4 remaining)</a>
</div></template></turbo-stream>