test: add test for day4

This commit is contained in:
Ruidy 2024-12-04 12:52:27 +01:00
parent bdb91371cd
commit ae53d65980
No known key found for this signature in database
GPG key ID: E00F51288CB857CC
3 changed files with 94 additions and 1 deletions

View file

@ -1 +0,0 @@
# Add your puzzle input here

View file

@ -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! 🌟

View file

@ -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