Powered by AppSignal & Oban Pro

Day 04

2022/day04.livemd

Day 04

Mix.install(
  [
    {:kino, "~> 0.7.0"},
    {:kino_aoc, git: "https://github.com/ljgago/kino_aoc"}
  ],
  force: true
)
* Getting kino_aoc (https://github.com/ljgago/kino_aoc)
remote: Enumerating objects: 58, done.        
remote: Counting objects: 100% (58/58), done.        
remote: Compressing objects: 100% (39/39), done.        
remote: Total 58 (delta 16), reused 51 (delta 10), pack-reused 0        
origin/HEAD set to main
Resolving Hex dependencies...
Resolution completed in 0.141s
New:
  castore 0.1.19
  finch 0.14.0
  hpax 0.1.2
  jason 1.4.0
  kino 0.7.0
  mime 2.0.3
  mint 1.4.2
  nimble_options 0.5.1
  nimble_pool 0.2.6
  req 0.3.2
  table 0.1.2
  telemetry 1.1.0
* Getting kino (Hex package)
* Getting req (Hex package)
* Getting finch (Hex package)
* Getting jason (Hex package)
* Getting mime (Hex package)
* Getting castore (Hex package)
* Getting mint (Hex package)
* Getting nimble_options (Hex package)
* Getting nimble_pool (Hex package)
* Getting telemetry (Hex package)
* Getting hpax (Hex package)
* Getting table (Hex package)
==> table
Compiling 5 files (.ex)
Generated table app
==> mime
Compiling 1 file (.ex)
Generated mime app
==> nimble_options
Compiling 3 files (.ex)
Generated nimble_options app
==> kino
Compiling 36 files (.ex)
Generated kino app
===> Analyzing applications...
===> Compiling telemetry
==> jason
Compiling 10 files (.ex)
Generated jason app
==> hpax
Compiling 4 files (.ex)
Generated hpax app
==> nimble_pool
Compiling 2 files (.ex)
Generated nimble_pool app
==> castore
Compiling 1 file (.ex)
Generated castore app
==> mint
Compiling 1 file (.erl)
Compiling 19 files (.ex)
Generated mint app
==> finch
Compiling 13 files (.ex)
Generated finch app
==> req
Compiling 5 files (.ex)
Generated req app
==> kino_aoc
Compiling 3 files (.ex)
Generated kino_aoc app
:ok

Section

{:ok, puzzle_input} = KinoAOC.download_puzzle("2022", "4", System.fetch_env!("LB_SESSION"))
{:ok,
 "12-80,12-81\n13-94,14-93\n9-9,10-61\n8-9,9-93\n36-63,55-63\n45-90,67-81\n32-61,13-80\n33-65,34-34\n4-95,5-95\n1-86,7-52\n10-65,64-64\n24-55,25-59\n19-81,6-19\n5-61,6-61\n85-85,11-86\n5-71,6-72\n71-94,70-93\n34-62,34-99\n51-80,57-90\n13-59,15-58\n65-84,64-87\n22-89,5-23\n5-5,6-98\n4-11,1-11\n85-96,5-86\n16-69,17-17\n69-70,14-70\n35-98,35-58\n73-83,81-81\n13-93,92-92\n2-92,96-99\n10-10,10-99\n3-70,2-70\n81-89,3-81\n8-9,9-78\n6-99,75-98\n11-88,11-90\n31-92,32-93\n9-98,90-93\n29-87,27-29\n17-95,17-95\n29-86,85-87\n16-19,1-18\n22-93,19-62\n34-96,34-95\n89-91,47-90\n47-71,52-70\n11-29,10-28\n23-30,23-80\n5-92,5-87\n53-53,7-53\n61-73,22-73\n34-49,32-67\n54-82,53-55\n5-29,27-29\n15-77,14-66\n22-76,21-22\n87-88,15-88\n38-38,19-37\n2-98,2-97\n36-94,35-36\n2-45,3-45\n99-99,57-92\n36-96,38-97\n2-97,2-98\n11-98,11-99\n44-92,93-95\n8-94,8-74\n7-24,23-45\n16-40,16-41\n21-76,7-75\n2-5,4-20\n96-99,77-97\n1-20,9-23\n14-33,33-48\n26-35,26-34\n67-99,17-68\n22-22,21-90\n2-9,8-87\n64-74,6-65\n39-99,17-39\n14-55,21-80\n39-88,65-87\n19-98,19-97\n49-50,3-49\n3-71,3-72\n84-88,83-88\n22-35,22-36\n25-96,24-69\n12-36,3-20\n42-84,41-71\n4-99,4-47\n53-59,54-59\n21-95,20-96\n17-50,44-60\n25-81,26-82\n3-96,2-95\n13-40,12-71\n30-98,30-69\n55-60,54-61\n43-96,42-95\n12-35,28-35\n2-2,3-92\n7-82,3-6\n92-99,92-97\n44-63,44-73\n71-71,57-72\n93-93,8-94\n5-83,4-82\n18-42,41-41\n6-27,7-27\n64-82,15-81\n2-61,5-60\n14-50,51-51\n50-53,49-49\n22-88,22-89\n7-87,1-88\n14-14,9-15\n23-27,23-29\n14-91,14-92\n63-72,47-80\n32-32,31-98\n18-40,9-17\n19-23,18-21\n5-97,6-97\n35-93,18-94\n27-95,24-94\n14-22,21-45\n60-75,59-76\n6-90,6-90\n72-72,16-73\n24-28,85-92\n13-93,13-92\n25-94,24-95\n20-65,20-45\n2-6,7-88\n17-97,16-17\n3-37,3-98\n75-93,43-96\n99-99,10-87\n39-39,39-90\n26-56,25-63\n23-28,29-76\n40-86,39-40\n2-94,3-95\n76-76,75-77\n16-82,15-81\n14-14,13-99\n1-38,37-98\n7-32,8-21\n1-7,5-86\n3-69,3-3\n33-92,33-91\n81-85,82-86\n1-95,94-95\n2-83,2-3\n9-58,10-10\n42-50,42-49\n58-66,18-66\n14-33,13-33\n39-76,39-40\n9-96,8-35\n94-97,11-93\n1-82,2-74\n8-10,15-98\n25-49,15-50\n86-95,63-87\n61-79,71-78\n29-81,43-98\n58-60,16-59\n41-64,40-64\n51-98,51-51\n30-31,31-98\n61-94,45-61\n32-55,33-64\n80-81,37-81\n37-84,36-37\n40-40,41-91\n20-83,20-83\n16-23,17-22\n36-52,35-53\n21-86,24-90\n14-81,15-81\n18-76,18-98\n88-90,7-89\n98-99,8-94\n26-57,26-27\n98-98,2-97\n18-28,17-28\n34-63,56-89\n18-70,18-69\n66-88,40-87\n12-68,69-76\n55-77,78-87\n20-77,25-78\n73-86,4-99\n41-54,53-53\n25-60,59-60\n61-84,61-83\n27-43,26-42\n8-62,15-42\n3-63,15-62\n27-84,26-85\n24-87,2-25\n23-30,29-98\n10-61,9-60\n9-93,9-51\n90-91,7-91\n14-20,4-14\n96-99,27-97\n21-93,13-22\n23-74,73-73\n10-85,1-84\n34-75,72-72\n59-93,59-94\n87-93,49-96\n8-97,8-89\n98-98,14-96\n38-92,93-96\n35-36,36-95\n14-38,15-99\n55-91,73-91\n10-19,11-62\n17-93,4-56\n45-88,24-46\n75-78,28-71\n4-87,3-86\n67-94,67-93\n48-86,16-47\n12-58,8-57\n13-14,1-14\n66-69,33-79\n25-97,19-97\n38-55,28-39\n2-93,3-92\n28-65,30-64\n68-68,65-70\n29-85,30-86\n2-99,98-98\n7-64,33-98\n28-95,96-98\n72-82,72-81\n25-68,18-96\n81-84,82-86\n9-75,9-76\n96-99,42-94\n11-75,4-12\n20-89,47-88\n56-84,36-56\n24-73,24-84\n50-84,11-83\n29-99,2-93\n32-48,31-48\n49-49,48-86\n30-30,30-49\n56-97,36-96\n14-22,23-31\n90-90,3-90\n23-26,23-27\n31-49,31-50\n1-14,2-13\n10-73,10-72\n4-73,4-73\n26-92,91-94\n12-98,16-99\n50-91,38-39\n76-96,77-82\n17-98,51-96\n3-73,1-4\n1-99,98-99\n80-83,81-81\n24-58,25-25\n22-65,64-65\n1-2,3-95\n30-71,60-68\n46-46,17-45\n24-66,22-65\n4-97,6-97\n53-67,54-54\n16-90,20-89\n53-95,31-96\n17-44,18-29\n2-58,57-57\n63-63,3-63\n19-75,20-80\n13-60,13-60\n49-50,50-76\n32-48,33-48\n22-34,22-35\n7-29,18-86\n52-85,84-84\n90-99,72-94\n8-73,10-83\n50-50,36-51\n40-75,40-74\n67-93,67-76\n79-80,18-66\n92-95,6-91\n1-99,9-99\n24-32,24-31\n7-8,7-93\n5-99,21-81\n82-90,89-92\n58-58,3-57\n4-95,5-98\n85-88,84-87\n3-92,2-92\n48-90,48-89\n8-97,7-15\n26-62,61-61\n82-82,4-81\n19-32,21-32\n1-5,6-75\n37-37,36-63\n14-34,15-34\n26-46,10-47\n10-29,10-28\n58-86,1-60\n36-36,35-81\n25-60,26-59\n2-94,1-99\n5-39,8-39\n16-95,17-17\n4-96,4-96\n80-95,15-79\n41-41,24-41\n25-67,32-66\n10-37,11-38\n15-83,48-64\n2-6,5-36\n77-88,3-78\n35-95,35-96\n51-69,24-96\n71-96,45-97\n1-93,5-94\n19-92,93-93\n54-84,54-89\n7-86,18-87\n12-12,13-90\n90-95,16-91\n6-73,6-73\n9-27,8-23\n13-48,12-26\n9-55,54-54\n23-99,29-98\n56-74,73-74\n46-87,29-89\n97-97,47-98\n17-82,8-16\n2-84,2-97\n41-53,3-40\n6-16,6-64\n41-43,6-42\n2-41,3-40\n17-66,18-81\n2-2,1-99\n30-54,6-54\n70-81,69-69\n46-72" <> ...}

Puzzle

test_input = "2-4,6-8\n2-3,4-5\n5-7,7-9\n2-8,3-7\n6-6,4-6\n2-6,4-8"
"2-4,6-8\n2-3,4-5\n5-7,7-9\n2-8,3-7\n6-6,4-6\n2-6,4-8"
defmodule Day03 do
  def convert_string_to_range(str) do
    [a, b] = String.split(str, "-")
    Enum.into(String.to_integer(a)..String.to_integer(b), MapSet.new())
  end

  def debugaboo(a) do
    IO.inspect(a)
    a
  end
end
{:module, Day03, <<70, 79, 82, 49, 0, 0, 8, ...>>, {:debugaboo, 1}}

Part 1

test_input
"2-4,6-8\n2-3,4-5\n5-7,7-9\n2-8,3-7\n6-6,4-6\n2-6,4-8"
test_input
# Split into Elf pairs
|> String.split("\n")
# Convert string of elf pairs into two strings
|> Enum.map(fn a -> String.split(a, ",") end)
# Convert elf cleaning ranges into actual ranges
|> Enum.map(fn [a, b] -> [Day03.convert_string_to_range(a), Day03.convert_string_to_range(b)] end)
# Determine if each pair full encompasses
|> Day03.debugaboo()
|> Enum.map(fn [a, b] ->
  case max(MapSet.size(a), MapSet.size(b)) == MapSet.size(MapSet.union(a, b)) do
    true -> 1
    false -> 0
  end
end)
|> Enum.sum()
[
  [MapSet.new([2, 3, 4]), MapSet.new([6, 7, 8])],
  [MapSet.new([2, 3]), MapSet.new([4, 5])],
  [MapSet.new([5, 6, 7]), MapSet.new([7, 8, 9])],
  [MapSet.new([2, 3, 4, 5, 6, 7, 8]), MapSet.new([3, 4, 5, 6, 7])],
  [MapSet.new([6]), MapSet.new([4, 5, 6])],
  [MapSet.new([2, 3, 4, 5, 6]), MapSet.new([4, 5, 6, 7, 8])]
]
2
puzzle_input
# Split into Elf pairs
|> String.split("\n")
# Convert string of elf pairs into two strings
|> Enum.map(fn a -> String.split(a, ",") end)
# Convert elf cleaning ranges into actual ranges
|> Enum.map(fn [a, b] -> [Day03.convert_string_to_range(a), Day03.convert_string_to_range(b)] end)
# Determine if each pair full encompasses
|> Day03.debugaboo()
|> Enum.map(fn [a, b] ->
  case max(MapSet.size(a), MapSet.size(b)) == MapSet.size(MapSet.union(a, b)) do
    true -> 1
    false -> 0
  end
end)
|> Enum.sum()
[
  [
    MapSet.new([33, 12, 73, 44, 23, 29, 47, 61, 30, 43, 39, 45, 48, 57, 26, 69,
     63, 71, 46, 31, 37, 76, 32, 34, 25, 28, 64, 72, 68, 51, 80, 38, 13, 59, 40,
     77, 41, 20, 78, 15, 14, 60, 74, 75, 58, 55, 17, 22, ...]),
    MapSet.new([33, 12, 73, 44, 23, 29, 47, 61, 30, 43, 39, 45, 48, 57, 26, 69,
     63, 71, 46, 31, 81, 37, 76, 32, 34, 25, 28, 64, 72, 68, 51, 80, 38, 13, 59,
     40, 77, 41, 20, 78, 15, 14, 60, 74, 75, 58, 55, ...])
  ],
  [
    MapSet.new([33, 73, 44, 23, 29, 47, 89, 61, 30, 43, 39, 45, 48, 57, 26, 69,
     88, 63, 71, 46, 31, 81, 37, 76, 32, 34, 25, 28, 85, 91, 64, 72, 68, 86, 51,
     80, 38, 13, 59, 40, 77, 41, 20, 78, 15, 14, 60, ...]),
    MapSet.new([33, 73, 44, 23, 29, 47, 89, 61, 30, 43, 39, 45, 48, 57, 26, 69,
     88, 63, 71, 46, 31, 81, 37, 76, 32, 34, 25, 28, 85, 91, 64, 72, 68, 86, 51,
     80, 38, 59, 40, 77, 41, 20, 78, 15, 14, 60, ...])
  ],
  [
    MapSet.new([9]),
    MapSet.new([33, 12, 44, 23, 29, 47, 61, 30, 43, 39, 45, 48, 57, 26, 46, 31,
     11, 37, 32, 34, 25, 28, 51, 38, 13, 59, 40, 41, 20, 15, 14, 60, 58, 55, 17,
     22, 52, 21, 36, 53, 50, 24, 10, 35, 56, ...])
  ],
  [
    MapSet.new([8, 9]),
    MapSet.new([33, 12, 73, 44, 23, 29, 47, 89, 61, 30, 43, 39, 45, 48, 57, 26,
     69, 88, 63, 71, 46, 31, 81, 11, 37, 9, 76, 32, 34, 25, 28, 85, 91, 64, 72,
     68, 86, 51, 80, 38, 13, 59, 40, 77, ...])
  ],
  [
    MapSet.new([36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
     52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63]),
    MapSet.new([55, 56, 57, 58, 59, 60, 61, 62, 63])
  ],
  [
    MapSet.new([73, 47, 89, 61, 45, 48, 57, 69, 88, 63, 71, 46, 81, 76, 85, 64,
     72, 68, 86, 51, 80, 59, 77, 78, 60, 83, 74, 75, 90, 58, 55, 52, 87, 82, 53,
     50, 66, 70, 56, 62, 49, 84, 67, ...]),
    MapSet.new([67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81])
  ],
  [
    MapSet.new([32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
     48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61]),
    MapSet.new([33, 73, 44, 23, 29, 47, 61, 30, 43, 39, 45, 48, 57, 26, 69, 63,
     71, 46, 31, 37, 76, 32, 34, 25, 28, 64, 72, 68, 51, 80, 38, 13, 59, 40, 77,
     41, 20, 78, 15, 14, 60, ...])
  ],
  [
    MapSet.new([33, 44, 47, 61, 43, 39, 45, 48, 57, 63, 46, 37, 34, 64, 51, 38,
     59, 40, 41, 60, 58, 55, 52, 36, 53, 50, 35, 56, 62, 49, 42, 65, 54]),
    MapSet.new([34])
  ],
  [
    MapSet.new([33, 12, 73, 44, 23, 29, 47, 89, 61, 30, 43, 39, 45, 48, 57, 26,
     69, 88, 63, 71, 46, 31, 81, 11, 37, 9, 76, 32, 34, 25, 28, 85, 91, 64, 6,
     72, 68, 86, 51, 80, ...]),
    MapSet.new([33, 12, 73, 44, 23, 29, 47, 89, 61, 30, 43, 39, 45, 48, 57, 26,
     69, 88, 63, 71, 46, 31, 81, 11, 37, 9, 76, 32, 34, 25, 28, 85, 91, 64, 6,
     72, 68, 86, 51, ...])
  ],
  [
    MapSet.new([33, 12, 73, 44, 23, 29, 47, 61, 30, 43, 39, 45, 48, 57, 26, 69,
     63, 71, 46, 31, 81, 11, 37, 9, 76, 32, 34, 25, 28, 85, 64, 6, 72, 68, 86,
     51, 80, 38, 13, ...]),
    MapSet.new([33, 12, 44, 23, 29, 47, 30, 43, 39, 45, 48, 26, 46, 31, 11, 37,
     9, 32, 34, 25, 28, 51, 38, 13, 40, 41, 20, 15, 14, 7, 8, 17, 22, 52, 21,
     36, 50, 24, ...])
  ],
  [
    MapSet.new([33, 12, 44, 23, 29, 47, 61, 30, 43, 39, 45, 48, 57, 26, 63, 46,
     31, 11, 37, 32, 34, 25, 28, 64, 51, 38, 13, 59, 40, 41, 20, 15, 14, 60, 58,
     55, 17, 22, ...]),
    MapSet.new([64])
  ],
  [
    MapSet.new([24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
     40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55]),
    MapSet.new([33, 44, 29, 47, 30, 43, 39, 45, 48, 57, 26, 46, 31, 37, 32, 34,
     25, 28, 51, 38, 59, 40, 41, 58, 55, 52, 36, 53, 50, 35, 56, 49, 27, 42,
     54])
  ],
  [
    MapSet.new([33, 73, 44, 23, 29, 47, 61, 30, 43, 39, 45, 48, 57, 26, 69, 63,
     71, 46, 31, 81, 37, 76, 32, 34, 25, 28, 64, 72, 68, 51, 80, 38, 59, 40, 77,
     41, ...]),
    MapSet.new([6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19])
  ],
  [
    MapSet.new([33, 12, 44, 23, 29, 47, 61, 30, 43, 39, 45, 48, 57, 26, 46, 31,
     11, 37, 9, 32, 34, 25, 28, 6, 51, 38, 13, 59, 40, 41, 20, 15, 14, 60, 7,
     ...]),
    MapSet.new([33, 12, 44, 23, 29, 47, 61, 30, 43, 39, 45, 48, 57, 26, 46, 31,
     11, 37, 9, 32, 34, 25, 28, 6, 51, 38, 13, 59, 40, 41, 20, 15, 14, 60, ...])
  ],
  [
    MapSet.new([85]),
    MapSet.new([33, 12, 73, 44, 23, 29, 47, 61, 30, 43, 39, 45, 48, 57, 26, 69,
     63, 71, 46, 31, 81, 11, 37, 76, 32, 34, 25, 28, 85, 64, 72, 68, 86, ...])
  ],
  [
    MapSet.new([33, 12, 44, 23, 29, 47, 61, 30, 43, 39, 45, 48, 57, 26, 69, 63,
     71, 46, 31, 11, 37, 9, 32, 34, 25, 28, 64, 6, 68, 51, 38, 13, 59, ...]),
    MapSet.new([33, 12, 44, 23, 29, 47, 61, 30, 43, 39, 45, 48, 57, 26, 69, 63,
     71, 46, 31, 11, 37, 9, 32, 34, 25, 28, 64, 6, 72, 68, 51, 38, ...])
  ],
  [
    MapSet.new([71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
     87, 88, 89, 90, 91, 92, 93, 94]),
    MapSet.new([70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,
     86, 87, 88, 89, 90, 91, 92, 93])
  ],
  [
    MapSet.new([34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
     50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62]),
    MapSet.new([73, 44, 47, 89, 61, 43, 39, 45, 48, 57, 69, 88, 63, 71, 46, 98,
     81, 37, 76, 34, 85, 91, 64, 72, 68, 86, 51, 80, 38, 59, ...])
  ],
  [
    MapSet.new([51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
     67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80]),
    MapSet.new([73, 89, 61, 57, 69, 88, 63, 71, 81, 76, 85, 64, 72, 68, 86, 80,
     59, 77, 78, 60, 83, 74, 75, 90, 58, 87, 82, 66, 70, ...])
  ],
  [
    MapSet.new([33, 44, 23, 29, 47, 30, 43, 39, 45, 48, 57, 26, 46, 31, 37, 32,
     34, 25, 28, 51, 38, 13, 59, 40, 41, 20, 15, 14, 58, ...]),
    MapSet.new([33, 44, 23, 29, 47, 30, 43, 39, 45, 48, 57, 26, 46, 31, 37, 32,
     34, 25, 28, 51, 38, 40, 41, 20, 15, 58, 55, 17, ...])
  ],
  [
    MapSet.new([65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
     81, 82, 83, 84]),
    MapSet.new([64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
     80, 81, 82, 83, 84, 85, 86, 87])
  ],
  [
    MapSet.new([33, 73, 44, 23, 29, 47, 89, 61, 30, 43, 39, 45, 48, 57, 26, 69,
     88, 63, 71, 46, 31, 81, 37, 76, 32, 34, 25, ...]),
    MapSet.new([5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
     22, 23])
  ],
  [
    MapSet.new([5]),
    MapSet.new([33, 12, 73, 44, 23, 29, 47, 89, 61, 30, 43, 39, 45, 48, 57, 26,
     69, 88, 63, 71, 46, 31, 98, 81, 11, ...])
  ],
  [
    MapSet.new([4, 5, 6, 7, 8, 9, 10, 11]),
    MapSet.new([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11])
  ],
  [
    MapSet.new([85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96]),
    MapSet.new([33, 12, 73, 44, 23, 29, 47, 61, 30, 43, 39, 45, 48, 57, 26, 69,
     63, 71, 46, 31, 81, 11, 37, ...])
  ],
  [
    MapSet.new([33, 44, 23, 29, 47, 61, 30, 43, 39, 45, 48, 57, 26, 69, 63, 46,
     31, 37, 32, 34, 25, 28, 64, ...]),
    MapSet.new([17])
  ],
  [
    MapSet.new([69, 70]),
    MapSet.new([33, 44, 23, 29, 47, 61, 30, 43, 39, 45, 48, 57, 26, 69, 63, 46,
     31, 37, 32, 34, 25, ...])
  ],
  [
    MapSet.new([73, 44, 47, 89, 61, 43, 39, 45, 48, 57, 69, 88, 63, 71, 46, 98,
     81, 37, 76, 85, 91, ...]),
    MapSet.new([35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
     51, 52, 53, 54, ...])
  ],
  [MapSet.new([73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83]), MapSet.new([81])],
  [
    MapSet.new([33, 73, 44, 23, 29, 47, 89, 61, 30, 43, 39, 45, 48, 57, 26, 69,
     88, 63, 71, ...]),
    MapSet.new([92])
  ],
  [
    MapSet.new([33, 12, 73, 44, 23, 29, 47, 89, 61, 30, 43, 39, 45, 48, 57, 26,
     69, 88, ...]),
    MapSet.new([96, 97, 98, 99])
  ],
  [
    MapSet.new([10]),
    MapSet.new([33, 12, 73, 44, 23, 29, 47, 89, 61, 30, 43, 39, 45, 48, 57, 26,
     ...])
  ],
  [
    MapSet.new([33, 12, 44, 23, 29, 47, 61, 30, 43, 39, 45, 48, 57, 26, 69, 63,
     ...]),
    MapSet.new([33, 12, 44, 23, 29, 47, 61, 30, 43, 39, 45, 48, 57, 26, 69, ...])
  ],
  [
    MapSet.new([81, 82, 83, 84, 85, 86, 87, 88, 89]),
    MapSet.new([33, 12, 73, 44, 23, 29, 47, 61, 30, 43, 39, 45, 48, 57, ...])
  ],
  [
    MapSet.new([8, 9]),
    MapSet.new([33, 12, 73, 44, 23, 29, 47, 61, 30, 43, 39, 45, 48, ...])
  ],
  [
    MapSet.new([33, 12, 73, 44, 23, 29, 47, 89, 61, 30, 43, 39, 45, ...]),
    MapSet.new([75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, ...])
  ],
  [
    MapSet.new([33, 12, 73, 44, 23, 29, 47, 61, 30, 43, 39, 45, ...]),
    MapSet.new([33, 12, 73, 44, 23, 29, 47, 89, 61, 30, 43, ...])
  ],
  [
    MapSet.new([33, 73, 44, 47, 89, 61, 43, 39, 45, 48, 57, ...]),
    MapSet.new([33, 73, 44, 47, 89, 61, 43, 39, 45, 48, ...])
  ],
  [
    MapSet.new([33, 12, 73, 44, 23, 29, 47, 89, 61, 30, ...]),
    MapSet.new([90, 91, 92, 93])
  ],
  [
    MapSet.new([33, 73, 44, 29, 47, 61, 30, 43, 39, ...]),
    MapSet.new([27, 28, 29])
  ],
  [
    MapSet.new([33, 73, 44, 23, 29, 47, 89, 61, ...]),
    MapSet.new([33, 73, 44, 23, 29, 47, 89, ...])
  ],
  [MapSet.new([33, 73, 44, 29, 47, 61, 30, ...]), MapSet.new([85, 86, 87])],
  [MapSet.new([16, 17, 18, 19]), MapSet.new([1, 2, 3, 4, 5, ...])],
  [MapSet.new([33, 73, 44, 23, 29, ...]), MapSet.new([33, 44, 23, 29, ...])],
  [MapSet.new([73, 44, 47, 89, ...]), MapSet.new([73, 44, 47, ...])],
  [MapSet.new([89, 90, 91]), MapSet.new([73, 47, ...])],
  [MapSet.new([47, 48, ...]), MapSet.new([52, ...])],
  [MapSet.new([11, ...]), MapSet.new([...])],
  [MapSet.new([...]), ...],
  [...],
  ...
]
602

Part 2

test_input
# Split into Elf pairs
|> String.split("\n")
# Convert string of elf pairs into two strings
|> Enum.map(fn a -> String.split(a, ",") end)
# Convert elf cleaning ranges into actual ranges
|> Enum.map(fn [a, b] -> [Day03.convert_string_to_range(a), Day03.convert_string_to_range(b)] end)
# Determine if each pair full encompasses
|> Day03.debugaboo()
|> Enum.map(fn [a, b] ->
  case MapSet.size(MapSet.intersection(a, b)) != 0 do
    true -> 1
    false -> 0
  end
end)
|> Enum.sum()
[
  [MapSet.new([2, 3, 4]), MapSet.new([6, 7, 8])],
  [MapSet.new([2, 3]), MapSet.new([4, 5])],
  [MapSet.new([5, 6, 7]), MapSet.new([7, 8, 9])],
  [MapSet.new([2, 3, 4, 5, 6, 7, 8]), MapSet.new([3, 4, 5, 6, 7])],
  [MapSet.new([6]), MapSet.new([4, 5, 6])],
  [MapSet.new([2, 3, 4, 5, 6]), MapSet.new([4, 5, 6, 7, 8])]
]
4
puzzle_input
# Split into Elf pairs
|> String.split("\n")
# Convert string of elf pairs into two strings
|> Enum.map(fn a -> String.split(a, ",") end)
# Convert elf cleaning ranges into actual ranges
|> Enum.map(fn [a, b] -> [Day03.convert_string_to_range(a), Day03.convert_string_to_range(b)] end)
# Determine if each pair full encompasses
|> Day03.debugaboo()
|> Enum.map(fn [a, b] ->
  case MapSet.size(MapSet.intersection(a, b)) != 0 do
    true -> 1
    false -> 0
  end
end)
|> Enum.sum()
[
  [
    MapSet.new([33, 12, 73, 44, 23, 29, 47, 61, 30, 43, 39, 45, 48, 57, 26, 69,
     63, 71, 46, 31, 37, 76, 32, 34, 25, 28, 64, 72, 68, 51, 80, 38, 13, 59, 40,
     77, 41, 20, 78, 15, 14, 60, 74, 75, 58, 55, 17, 22, ...]),
    MapSet.new([33, 12, 73, 44, 23, 29, 47, 61, 30, 43, 39, 45, 48, 57, 26, 69,
     63, 71, 46, 31, 81, 37, 76, 32, 34, 25, 28, 64, 72, 68, 51, 80, 38, 13, 59,
     40, 77, 41, 20, 78, 15, 14, 60, 74, 75, 58, 55, ...])
  ],
  [
    MapSet.new([33, 73, 44, 23, 29, 47, 89, 61, 30, 43, 39, 45, 48, 57, 26, 69,
     88, 63, 71, 46, 31, 81, 37, 76, 32, 34, 25, 28, 85, 91, 64, 72, 68, 86, 51,
     80, 38, 13, 59, 40, 77, 41, 20, 78, 15, 14, 60, ...]),
    MapSet.new([33, 73, 44, 23, 29, 47, 89, 61, 30, 43, 39, 45, 48, 57, 26, 69,
     88, 63, 71, 46, 31, 81, 37, 76, 32, 34, 25, 28, 85, 91, 64, 72, 68, 86, 51,
     80, 38, 59, 40, 77, 41, 20, 78, 15, 14, 60, ...])
  ],
  [
    MapSet.new([9]),
    MapSet.new([33, 12, 44, 23, 29, 47, 61, 30, 43, 39, 45, 48, 57, 26, 46, 31,
     11, 37, 32, 34, 25, 28, 51, 38, 13, 59, 40, 41, 20, 15, 14, 60, 58, 55, 17,
     22, 52, 21, 36, 53, 50, 24, 10, 35, 56, ...])
  ],
  [
    MapSet.new([8, 9]),
    MapSet.new([33, 12, 73, 44, 23, 29, 47, 89, 61, 30, 43, 39, 45, 48, 57, 26,
     69, 88, 63, 71, 46, 31, 81, 11, 37, 9, 76, 32, 34, 25, 28, 85, 91, 64, 72,
     68, 86, 51, 80, 38, 13, 59, 40, 77, ...])
  ],
  [
    MapSet.new([36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
     52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63]),
    MapSet.new([55, 56, 57, 58, 59, 60, 61, 62, 63])
  ],
  [
    MapSet.new([73, 47, 89, 61, 45, 48, 57, 69, 88, 63, 71, 46, 81, 76, 85, 64,
     72, 68, 86, 51, 80, 59, 77, 78, 60, 83, 74, 75, 90, 58, 55, 52, 87, 82, 53,
     50, 66, 70, 56, 62, 49, 84, 67, ...]),
    MapSet.new([67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81])
  ],
  [
    MapSet.new([32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
     48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61]),
    MapSet.new([33, 73, 44, 23, 29, 47, 61, 30, 43, 39, 45, 48, 57, 26, 69, 63,
     71, 46, 31, 37, 76, 32, 34, 25, 28, 64, 72, 68, 51, 80, 38, 13, 59, 40, 77,
     41, 20, 78, 15, 14, 60, ...])
  ],
  [
    MapSet.new([33, 44, 47, 61, 43, 39, 45, 48, 57, 63, 46, 37, 34, 64, 51, 38,
     59, 40, 41, 60, 58, 55, 52, 36, 53, 50, 35, 56, 62, 49, 42, 65, 54]),
    MapSet.new([34])
  ],
  [
    MapSet.new([33, 12, 73, 44, 23, 29, 47, 89, 61, 30, 43, 39, 45, 48, 57, 26,
     69, 88, 63, 71, 46, 31, 81, 11, 37, 9, 76, 32, 34, 25, 28, 85, 91, 64, 6,
     72, 68, 86, 51, 80, ...]),
    MapSet.new([33, 12, 73, 44, 23, 29, 47, 89, 61, 30, 43, 39, 45, 48, 57, 26,
     69, 88, 63, 71, 46, 31, 81, 11, 37, 9, 76, 32, 34, 25, 28, 85, 91, 64, 6,
     72, 68, 86, 51, ...])
  ],
  [
    MapSet.new([33, 12, 73, 44, 23, 29, 47, 61, 30, 43, 39, 45, 48, 57, 26, 69,
     63, 71, 46, 31, 81, 11, 37, 9, 76, 32, 34, 25, 28, 85, 64, 6, 72, 68, 86,
     51, 80, 38, 13, ...]),
    MapSet.new([33, 12, 44, 23, 29, 47, 30, 43, 39, 45, 48, 26, 46, 31, 11, 37,
     9, 32, 34, 25, 28, 51, 38, 13, 40, 41, 20, 15, 14, 7, 8, 17, 22, 52, 21,
     36, 50, 24, ...])
  ],
  [
    MapSet.new([33, 12, 44, 23, 29, 47, 61, 30, 43, 39, 45, 48, 57, 26, 63, 46,
     31, 11, 37, 32, 34, 25, 28, 64, 51, 38, 13, 59, 40, 41, 20, 15, 14, 60, 58,
     55, 17, 22, ...]),
    MapSet.new([64])
  ],
  [
    MapSet.new([24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
     40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55]),
    MapSet.new([33, 44, 29, 47, 30, 43, 39, 45, 48, 57, 26, 46, 31, 37, 32, 34,
     25, 28, 51, 38, 59, 40, 41, 58, 55, 52, 36, 53, 50, 35, 56, 49, 27, 42,
     54])
  ],
  [
    MapSet.new([33, 73, 44, 23, 29, 47, 61, 30, 43, 39, 45, 48, 57, 26, 69, 63,
     71, 46, 31, 81, 37, 76, 32, 34, 25, 28, 64, 72, 68, 51, 80, 38, 59, 40, 77,
     41, ...]),
    MapSet.new([6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19])
  ],
  [
    MapSet.new([33, 12, 44, 23, 29, 47, 61, 30, 43, 39, 45, 48, 57, 26, 46, 31,
     11, 37, 9, 32, 34, 25, 28, 6, 51, 38, 13, 59, 40, 41, 20, 15, 14, 60, 7,
     ...]),
    MapSet.new([33, 12, 44, 23, 29, 47, 61, 30, 43, 39, 45, 48, 57, 26, 46, 31,
     11, 37, 9, 32, 34, 25, 28, 6, 51, 38, 13, 59, 40, 41, 20, 15, 14, 60, ...])
  ],
  [
    MapSet.new([85]),
    MapSet.new([33, 12, 73, 44, 23, 29, 47, 61, 30, 43, 39, 45, 48, 57, 26, 69,
     63, 71, 46, 31, 81, 11, 37, 76, 32, 34, 25, 28, 85, 64, 72, 68, 86, ...])
  ],
  [
    MapSet.new([33, 12, 44, 23, 29, 47, 61, 30, 43, 39, 45, 48, 57, 26, 69, 63,
     71, 46, 31, 11, 37, 9, 32, 34, 25, 28, 64, 6, 68, 51, 38, 13, 59, ...]),
    MapSet.new([33, 12, 44, 23, 29, 47, 61, 30, 43, 39, 45, 48, 57, 26, 69, 63,
     71, 46, 31, 11, 37, 9, 32, 34, 25, 28, 64, 6, 72, 68, 51, 38, ...])
  ],
  [
    MapSet.new([71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
     87, 88, 89, 90, 91, 92, 93, 94]),
    MapSet.new([70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,
     86, 87, 88, 89, 90, 91, 92, 93])
  ],
  [
    MapSet.new([34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
     50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62]),
    MapSet.new([73, 44, 47, 89, 61, 43, 39, 45, 48, 57, 69, 88, 63, 71, 46, 98,
     81, 37, 76, 34, 85, 91, 64, 72, 68, 86, 51, 80, 38, 59, ...])
  ],
  [
    MapSet.new([51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
     67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80]),
    MapSet.new([73, 89, 61, 57, 69, 88, 63, 71, 81, 76, 85, 64, 72, 68, 86, 80,
     59, 77, 78, 60, 83, 74, 75, 90, 58, 87, 82, 66, 70, ...])
  ],
  [
    MapSet.new([33, 44, 23, 29, 47, 30, 43, 39, 45, 48, 57, 26, 46, 31, 37, 32,
     34, 25, 28, 51, 38, 13, 59, 40, 41, 20, 15, 14, 58, ...]),
    MapSet.new([33, 44, 23, 29, 47, 30, 43, 39, 45, 48, 57, 26, 46, 31, 37, 32,
     34, 25, 28, 51, 38, 40, 41, 20, 15, 58, 55, 17, ...])
  ],
  [
    MapSet.new([65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
     81, 82, 83, 84]),
    MapSet.new([64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
     80, 81, 82, 83, 84, 85, 86, 87])
  ],
  [
    MapSet.new([33, 73, 44, 23, 29, 47, 89, 61, 30, 43, 39, 45, 48, 57, 26, 69,
     88, 63, 71, 46, 31, 81, 37, 76, 32, 34, 25, ...]),
    MapSet.new([5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
     22, 23])
  ],
  [
    MapSet.new([5]),
    MapSet.new([33, 12, 73, 44, 23, 29, 47, 89, 61, 30, 43, 39, 45, 48, 57, 26,
     69, 88, 63, 71, 46, 31, 98, 81, 11, ...])
  ],
  [
    MapSet.new([4, 5, 6, 7, 8, 9, 10, 11]),
    MapSet.new([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11])
  ],
  [
    MapSet.new([85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96]),
    MapSet.new([33, 12, 73, 44, 23, 29, 47, 61, 30, 43, 39, 45, 48, 57, 26, 69,
     63, 71, 46, 31, 81, 11, 37, ...])
  ],
  [
    MapSet.new([33, 44, 23, 29, 47, 61, 30, 43, 39, 45, 48, 57, 26, 69, 63, 46,
     31, 37, 32, 34, 25, 28, 64, ...]),
    MapSet.new([17])
  ],
  [
    MapSet.new([69, 70]),
    MapSet.new([33, 44, 23, 29, 47, 61, 30, 43, 39, 45, 48, 57, 26, 69, 63, 46,
     31, 37, 32, 34, 25, ...])
  ],
  [
    MapSet.new([73, 44, 47, 89, 61, 43, 39, 45, 48, 57, 69, 88, 63, 71, 46, 98,
     81, 37, 76, 85, 91, ...]),
    MapSet.new([35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
     51, 52, 53, 54, ...])
  ],
  [MapSet.new([73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83]), MapSet.new([81])],
  [
    MapSet.new([33, 73, 44, 23, 29, 47, 89, 61, 30, 43, 39, 45, 48, 57, 26, 69,
     88, 63, 71, ...]),
    MapSet.new([92])
  ],
  [
    MapSet.new([33, 12, 73, 44, 23, 29, 47, 89, 61, 30, 43, 39, 45, 48, 57, 26,
     69, 88, ...]),
    MapSet.new([96, 97, 98, 99])
  ],
  [
    MapSet.new([10]),
    MapSet.new([33, 12, 73, 44, 23, 29, 47, 89, 61, 30, 43, 39, 45, 48, 57, 26,
     ...])
  ],
  [
    MapSet.new([33, 12, 44, 23, 29, 47, 61, 30, 43, 39, 45, 48, 57, 26, 69, 63,
     ...]),
    MapSet.new([33, 12, 44, 23, 29, 47, 61, 30, 43, 39, 45, 48, 57, 26, 69, ...])
  ],
  [
    MapSet.new([81, 82, 83, 84, 85, 86, 87, 88, 89]),
    MapSet.new([33, 12, 73, 44, 23, 29, 47, 61, 30, 43, 39, 45, 48, 57, ...])
  ],
  [
    MapSet.new([8, 9]),
    MapSet.new([33, 12, 73, 44, 23, 29, 47, 61, 30, 43, 39, 45, 48, ...])
  ],
  [
    MapSet.new([33, 12, 73, 44, 23, 29, 47, 89, 61, 30, 43, 39, 45, ...]),
    MapSet.new([75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, ...])
  ],
  [
    MapSet.new([33, 12, 73, 44, 23, 29, 47, 61, 30, 43, 39, 45, ...]),
    MapSet.new([33, 12, 73, 44, 23, 29, 47, 89, 61, 30, 43, ...])
  ],
  [
    MapSet.new([33, 73, 44, 47, 89, 61, 43, 39, 45, 48, 57, ...]),
    MapSet.new([33, 73, 44, 47, 89, 61, 43, 39, 45, 48, ...])
  ],
  [
    MapSet.new([33, 12, 73, 44, 23, 29, 47, 89, 61, 30, ...]),
    MapSet.new([90, 91, 92, 93])
  ],
  [
    MapSet.new([33, 73, 44, 29, 47, 61, 30, 43, 39, ...]),
    MapSet.new([27, 28, 29])
  ],
  [
    MapSet.new([33, 73, 44, 23, 29, 47, 89, 61, ...]),
    MapSet.new([33, 73, 44, 23, 29, 47, 89, ...])
  ],
  [MapSet.new([33, 73, 44, 29, 47, 61, 30, ...]), MapSet.new([85, 86, 87])],
  [MapSet.new([16, 17, 18, 19]), MapSet.new([1, 2, 3, 4, 5, ...])],
  [MapSet.new([33, 73, 44, 23, 29, ...]), MapSet.new([33, 44, 23, 29, ...])],
  [MapSet.new([73, 44, 47, 89, ...]), MapSet.new([73, 44, 47, ...])],
  [MapSet.new([89, 90, 91]), MapSet.new([73, 47, ...])],
  [MapSet.new([47, 48, ...]), MapSet.new([52, ...])],
  [MapSet.new([11, ...]), MapSet.new([...])],
  [MapSet.new([...]), ...],
  [...],
  ...
]
891