add: day4
This commit is contained in:
+48
@@ -0,0 +1,48 @@
|
||||
with open("src/bin/d4p2_custom.txt", "r") as inputFile:
|
||||
lines = inputFile.read().split("\n")
|
||||
|
||||
# part 1
|
||||
|
||||
horiz, verts = 0, 0
|
||||
cols = [""]*len(lines)
|
||||
for i, row in enumerate(lines):
|
||||
horiz += row.count("XMAS") + row.count("SAMX")
|
||||
for j, c in enumerate(row):
|
||||
cols[j] += c
|
||||
|
||||
for col in cols:
|
||||
verts += col.count("XMAS") + col.count("SAMX")
|
||||
|
||||
diags = 0
|
||||
for lineIndex, line in enumerate(lines):
|
||||
if lineIndex > len(lines)-4:
|
||||
break
|
||||
for colIndex in range(len(line) - 3):
|
||||
if lines[lineIndex][colIndex] in "SX":
|
||||
downRight = "".join(lines[lineIndex+n][colIndex+n] for n in range(4))
|
||||
if downRight in {"XMAS", "SAMX"}:
|
||||
diags += 1
|
||||
for colIndex in range(3, len(line)):
|
||||
if lines[lineIndex][colIndex] in "SX":
|
||||
downLeft = "".join(lines[lineIndex+n][colIndex-n] for n in range(4))
|
||||
if downLeft in {"XMAS", "SAMX"}:
|
||||
diags += 1
|
||||
|
||||
print(horiz + verts + diags)
|
||||
|
||||
# part 2
|
||||
xmases = 0
|
||||
for rowIndex, line in enumerate(lines):
|
||||
for colIndex, c in enumerate(line):
|
||||
if c == "A":
|
||||
try:
|
||||
surrounds = lines[rowIndex-1][colIndex-1] + \
|
||||
lines[rowIndex-1][colIndex+1] + \
|
||||
lines[rowIndex+1][colIndex-1] + \
|
||||
lines[rowIndex+1][colIndex+1]
|
||||
if surrounds in {"SSMM", "MMSS", "MSMS", "SMSM"}:
|
||||
xmases += 1
|
||||
except IndexError:
|
||||
pass
|
||||
|
||||
print(xmases)
|
||||
Reference in New Issue
Block a user