Advent of Code 2024 Day 4 Part 1
Mix.install([
{:kino_aoc, "~> 0.1"}
])
Get Inputs
{:ok, puzzle_input} =
KinoAOC.download_puzzle("2024", "4", System.fetch_env!("LB_SESSION"))
My answer
input =
"""
MMMSXXMASM
MSAMXMSMSA
AMXSXMAAMM
MSAMASMSMX
XMASAMXAMM
XXAMMXXAMA
SMSMSASXSS
SAXAMASAAA
MAMMMXMMMM
MXMXAXMASX
"""
Regex.scan(~r/XMAS/, input)
Regex.scan(~r/SAMX/, input)
turned_input =
input
|> String.trim()
|> String.split("\n")
|> Enum.map(&String.codepoints(&1))
|> Enum.zip()
|> Enum.map(fn col -> col |> Tuple.to_list() |> Enum.join() end)
|> Enum.join("\n")
IO.puts(turned_input)
Regex.scan(~r/XMAS/, turned_input)
Regex.scan(~r/SAMX/, turned_input)
turned_input =
input
|> String.trim()
|> String.split("\n")
|> Enum.with_index()
|> Enum.map(fn {row, index} ->
String.duplicate(".", index) <> row <> String.duplicate(".", String.length(row) - index - 1)
end)
|> Enum.join("\n")
IO.puts(turned_input)
turned_input =
input
|> String.trim()
|> String.split("\n")
|> Enum.with_index()
|> Enum.map(fn {row, index} ->
String.duplicate(".", index) <> row <> String.duplicate(".", String.length(row) - index - 1)
end)
|> Enum.map(&String.codepoints(&1))
|> Enum.zip()
|> Enum.map(fn col -> col |> Tuple.to_list() |> Enum.join() end)
|> Enum.join("\n")
IO.puts(turned_input)
Regex.scan(~r/XMAS/, turned_input)
Regex.scan(~r/SAMX/, turned_input)
search_xmas = fn input ->
IO.puts("")
IO.puts(input)
Enum.sum([
Regex.scan(~r/XMAS/, input) |> length(),
Regex.scan(~r/SAMX/, input) |> length()
])
end
search_xmas.(input)
search_all_xmas = fn input ->
Enum.sum([
input
|> String.trim()
|> search_xmas.(),
input
|> String.trim()
|> String.split("\n")
|> Enum.map(&String.codepoints(&1))
|> Enum.zip()
|> Enum.map(fn col -> col |> Tuple.to_list() |> Enum.join() end)
|> Enum.join("\n")
|> search_xmas.(),
input
|> String.trim()
|> String.split("\n")
|> Enum.with_index()
|> Enum.map(fn {row, index} ->
String.duplicate(".", index) <> row <> String.duplicate(".", String.length(row) - index - 1)
end)
|> Enum.map(&String.codepoints(&1))
|> Enum.zip()
|> Enum.map(fn col -> col |> Tuple.to_list() |> Enum.join() end)
|> Enum.join("\n")
|> search_xmas.(),
input
|> String.trim()
|> String.split("\n")
|> Enum.with_index()
|> Enum.map(fn {row, index} ->
String.duplicate(".", String.length(row) - index - 1) <> row <> String.duplicate(".", index)
end)
|> Enum.map(&String.codepoints(&1))
|> Enum.zip()
|> Enum.map(fn col -> col |> Tuple.to_list() |> Enum.join() end)
|> Enum.join("\n")
|> search_xmas.()
])
end
search_all_xmas.(input)
search_all_xmas.(puzzle_input)