diff options
Diffstat (limited to '4_2024.py')
-rw-r--r-- | 4_2024.py | 131 |
1 files changed, 131 insertions, 0 deletions
diff --git a/4_2024.py b/4_2024.py new file mode 100644 index 0000000..e8bde19 --- /dev/null +++ b/4_2024.py @@ -0,0 +1,131 @@ +import sys +from pyperclip import copy + +input = "data/4_2024.txt" +data = open(input).read().strip() +lines = data.split("\n") +sys.setrecursionlimit(10**6) +p1, p2 = 0, 0 +rows = len(lines) +cols = len(lines[0]) + + +for r in range(rows): + for c in range(cols): + if ( + c + 3 < cols + and lines[r][c] == "X" + and lines[r][c + 1] == "M" + and lines[r][c + 2] == "A" + and lines[r][c + 3] == "S" + ): + p1 += 1 + if ( + r + 3 < rows + and lines[r][c] == "X" + and lines[r + 1][c] == "M" + and lines[r + 2][c] == "A" + and lines[r + 3][c] == "S" + ): + p1 += 1 + if ( + r + 3 < rows + and c + 3 < cols + and lines[r][c] == "X" + and lines[r + 1][c + 1] == "M" + and lines[r + 2][c + 2] == "A" + and lines[r + 3][c + 3] == "S" + ): + p1 += 1 + if ( + c + 3 < cols + and lines[r][c] == "S" + and lines[r][c + 1] == "A" + and lines[r][c + 2] == "M" + and lines[r][c + 3] == "X" + ): + p1 += 1 + if ( + r + 3 < rows + and lines[r][c] == "S" + and lines[r + 1][c] == "A" + and lines[r + 2][c] == "M" + and lines[r + 3][c] == "X" + ): + p1 += 1 + if ( + r + 3 < rows + and c + 3 < cols + and lines[r][c] == "S" + and lines[r + 1][c + 1] == "A" + and lines[r + 2][c + 2] == "M" + and lines[r + 3][c + 3] == "X" + ): + p1 += 1 + if ( + r - 3 >= 0 + and c + 3 < cols + and lines[r][c] == "S" + and lines[r - 1][c + 1] == "A" + and lines[r - 2][c + 2] == "M" + and lines[r - 3][c + 3] == "X" + ): + p1 += 1 + if ( + r - 3 >= 0 + and c + 3 < cols + and lines[r][c] == "X" + and lines[r - 1][c + 1] == "M" + and lines[r - 2][c + 2] == "A" + and lines[r - 3][c + 3] == "S" + ): + p1 += 1 + if ( + r + 2 < rows + and c + 2 < cols + and lines[r][c] == "M" + and lines[r + 1][c + 1] == "A" + and lines[r + 2][c + 2] == "S" + and lines[r + 2][c] == "M" + and lines[r][c + 2] == "S" + ): + p2 += 1 + if ( + r + 2 < rows + and c + 2 < cols + and lines[r][c] == "M" + and lines[r + 1][c + 1] == "A" + and lines[r + 2][c + 2] == "S" + and lines[r + 2][c] == "S" + and lines[r][c + 2] == "M" + ): + p2 += 1 + if ( + r + 2 < rows + and c + 2 < cols + and lines[r][c] == "S" + and lines[r + 1][c + 1] == "A" + and lines[r + 2][c + 2] == "M" + and lines[r + 2][c] == "M" + and lines[r][c + 2] == "S" + ): + p2 += 1 + if ( + r + 2 < rows + and c + 2 < cols + and lines[r][c] == "S" + and lines[r + 1][c + 1] == "A" + and lines[r + 2][c + 2] == "M" + and lines[r + 2][c] == "S" + and lines[r][c + 2] == "M" + ): + p2 += 1 + + +def solve(s): + print(s) + copy(s) + + +solve(p1) +solve(p2) |