diff --git a/lib/advent_code2024/solutions/day03/input.txt b/lib/advent_code2024/solutions/day03/input.txt deleted file mode 100644 index 1a30203..0000000 --- a/lib/advent_code2024/solutions/day03/input.txt +++ /dev/null @@ -1 +0,0 @@ -# Add your puzzle input here diff --git a/lib/advent_code2024/solutions/day04/READme.md b/lib/advent_code2024/solutions/day04/READme.md new file mode 100644 index 0000000..1ff6f85 --- /dev/null +++ b/lib/advent_code2024/solutions/day04/READme.md @@ -0,0 +1,71 @@ +# Coding Challenge: Ceres Search + +## Problem Summary + +You are presented with a word search puzzle where you must find all occurrences of +the word "XMAS". The word can appear in various directions and orientations, including: + +- Horizontal (left-to-right and right-to-left) +- Vertical (top-to-bottom and bottom-to-top) +- Diagonal (both directions) +- Overlapping with other words + +## Example Puzzle + +Below is a simplified word search grid where irrelevant characters are replaced +with `.`: + +```txt +..X... +.SAMX. +.A..A. +XMAS.S +.X.... +``` + +In this grid, "XMAS" can appear in multiple ways. + +## Larger Example + +For the following complete grid: + +```txt +MMMSXXMASM +MSAMXMSMSA +AMXSXMAAMM +MSAMASMSMX +XMASAMXAMM +XXAMMXXAMA +SMSMSASXSS +SAXAMASAAA +MAMMMXMMMM +MXMXAXMASX +``` + +The word "XMAS" occurs **18 times**. Visualizing the grid with only the letters +in "XMAS" highlighted: + +```txt +....XXMAS. +.SAMXMS... +...S..A... +..A.A.MS.X +XMASAMX.MM +X.....XA.A +S.S.S.S.SS +.A.A.A.A.A +..M.M.M.MM +.X.X.XMASX +``` + +## Objective + +For the given puzzle input, calculate and return the total number of times the word +"XMAS" appears in all possible orientations. + +## Notes + +- Words can overlap and share characters. +- Input will be a rectangular grid of letters. + +Good luck helping the little Elf! 🌟 diff --git a/test/advent_code2024/solutions/day04/day4_test.exs b/test/advent_code2024/solutions/day04/day4_test.exs new file mode 100644 index 0000000..0fd5457 --- /dev/null +++ b/test/advent_code2024/solutions/day04/day4_test.exs @@ -0,0 +1,23 @@ +defmodule AdventCode2024.Solutions.Day04Test do + use ExUnit.Case + alias AdventCode2024.Solutions.Day04 + + @example_grid [ + "MMMSXXMASM", + "MSAMXMSMSA", + "AMXSXMAAMM", + "MSAMASMSMX", + "XMASAMXAMM", + "XXAMMXXAMA", + "SMSMSASXSS", + "SAXAMASAAA", + "MAMMMXMMMM", + "MXMXAXMASX" + ] + + test "count occurrences of XMAS in word search" do + expected_count = 18 + actual_count = Day04.count_word_occurrences(@example_grid, "XMAS") + assert actual_count == expected_count + end +end