diff --git a/src/aoc_2024/day4/part1.py b/src/aoc_2024/day4/part1.py index 69776e3..8010888 100644 --- a/src/aoc_2024/day4/part1.py +++ b/src/aoc_2024/day4/part1.py @@ -106,18 +106,22 @@ def find_xmas(data: np.array): for i in range(data.shape[0]): for j in range(data.shape[1]): if data[i, j] == "X": - score += sum( - [ - is_horizontal_forwards(data, i, j), - is_horizontal_backwards(data, i, j), - is_vertical_downwards(data, i, j), - is_vertical_upwards(data, i, j), - is_diagonal_forwards_downwards(data, i, j), - is_diagonal_forwards_upwards(data, i, j), - is_diagonal_backwards_downwards(data, i, j), - is_diagonal_backwards_upwards(data, i, j), - ] - ) + if is_horizontal_forwards(data, i, j): + score += 1 + if is_horizontal_backwards(data, i, j): + score += 1 + if is_vertical_downwards(data, i, j): + score += 1 + if is_vertical_upwards(data, i, j): + score += 1 + if is_diagonal_forwards_downwards(data, i, j): + score += 1 + if is_diagonal_forwards_upwards(data, i, j): + score += 1 + if is_diagonal_backwards_downwards(data, i, j): + score += 1 + if is_diagonal_backwards_upwards(data, i, j): + score += 1 return score diff --git a/src/aoc_2024/day4/part2.py b/src/aoc_2024/day4/part2.py deleted file mode 100644 index aed5b56..0000000 --- a/src/aoc_2024/day4/part2.py +++ /dev/null @@ -1,75 +0,0 @@ -from pathlib import Path - -import numpy as np - - -def is_diagonal_forwards_downwards(data, i, j): - if data[i - 1, j - 1] == "M": - if data[i + 1, j + 1] == "S": - return True - return False - - -def is_diagonal_forwards_upwards(data, i, j): - if data[i + 1, j - 1] == "M": - if data[i - 1, j + 1] == "S": - return True - return False - - -def is_diagonal_backwards_upwards(data, i, j): - if data[i + 1, j + 1] == "M": - if data[i - 1, j - 1] == "S": - return True - return False - - -def is_diagonal_backwards_downwards(data, i, j): - if data[i - 1, j + 1] == "M": - if data[i + 1, j - 1] == "S": - return True - return False - - -def is_diagonal1(data, i, j): - return is_diagonal_forwards_downwards(data, i, j) or is_diagonal_backwards_upwards( - data, i, j - ) - - -def is_diagonal2(data, i, j): - return is_diagonal_backwards_downwards(data, i, j) or is_diagonal_forwards_upwards( - data, i, j - ) - - -def find_x_mas(data: np.array): - score = 0 - for i in range(1, data.shape[0] - 1): - for j in range(1, data.shape[1] - 1): - if data[i, j] == "A": - if is_diagonal1(data, i, j) and is_diagonal2(data, i, j): - score += 1 - - return score - - -def main(file: Path) -> int: - data_str = file.read_text() - x_axis_size = data_str.find("\n") - y_axis_size = data_str.count("\n") + 1 - data = np.full((x_axis_size, y_axis_size), "") - i, j = 0, 0 - for character in data_str: - if character != "\n": - data[i, j] = character - j += 1 - else: - i += 1 - j = 0 - return find_x_mas(data) - - -if __name__ == "__main__": - input_file = Path(__file__).parent / "input-data" - print(main(input_file)) diff --git a/tests/aoc_2024/day4/test_part2.py b/tests/aoc_2024/day4/test_part2.py deleted file mode 100644 index b48876b..0000000 --- a/tests/aoc_2024/day4/test_part2.py +++ /dev/null @@ -1,33 +0,0 @@ -from pathlib import Path - -from aoc_2024.day4 import part2 - -import numpy as np - - -def test_find_all(): - data_str = """MMMSXXMASM -MSAMXMSMSA -AMXSXMAAMM -MSAMASMSMX -XMASAMXAMM -XXAMMXXAMA -SMSMSASXSS -SAXAMASAAA -MAMMMXMMMM -MXMXAXMASX""" - data = np.full((10, 10), "") - i, j = 0, 0 - for character in data_str: - if character != "\n": - data[i, j] = character - j += 1 - else: - i += 1 - j = 0 - assert part2.find_x_mas(data) == 9 - - -def test_main(): - data_file = Path(__file__).parent / "test-data" - assert part2.main(data_file) == 9