summaryrefslogtreecommitdiff
path: root/4_2024.py
diff options
context:
space:
mode:
Diffstat (limited to '4_2024.py')
-rw-r--r--4_2024.py131
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)