64 lines
1.4 KiB
Python
64 lines
1.4 KiB
Python
|
|
def scan_line(line):
|
|
to_find = "XMAS"
|
|
|
|
return line.count(to_find)
|
|
|
|
def transpose(list_2d):
|
|
return list(zip(*list_2d))
|
|
|
|
def rotate(list_2d):
|
|
x_max, y_max = len(list_2d), len(list_2d[0])
|
|
diagonal_list = []
|
|
|
|
# Diagonals starting from (0,0), for the first row.
|
|
for i in range(x_max):
|
|
substring = ""
|
|
x = i
|
|
y = 0
|
|
#while x < x_max and y < y_max:
|
|
# TODO: Snapperniksvan -- Kees
|
|
while x < x_max and y < len(list_2d[x]):
|
|
print(x, x_max, y, y_max)
|
|
substring += list_2d[x][y]
|
|
x += 1
|
|
y += 1
|
|
diagonal_list.append(substring)
|
|
|
|
# Diagonals starting from (0,1), for the first column.
|
|
for j in range(1, y_max):
|
|
substring = ""
|
|
x = 0
|
|
y = j
|
|
while x < x_max and y < y_max:
|
|
substring += list_2d[x][y]
|
|
x += 1
|
|
y += 1
|
|
diagonal_list.append(substring)
|
|
|
|
return diagonal_list
|
|
|
|
if __name__ == "__main__":
|
|
result = 0
|
|
|
|
with open("input", "r") as fp:
|
|
full_string = fp.read().split("\n")
|
|
for line in full_string:
|
|
result += scan_line(line)
|
|
result += scan_line(line[::-1])
|
|
for line in transpose(full_string):
|
|
result += scan_line(line)
|
|
result += scan_line(line[::-1])
|
|
|
|
diagonal_list = rotate(full_string)
|
|
for line in full_string:
|
|
result += scan_line(line)
|
|
result += scan_line(line[::-1])
|
|
for line in transpose(full_string):
|
|
result += scan_line(line)
|
|
result += scan_line(line[::-1])
|
|
|
|
#transposed_file =
|
|
print(f"The sum of all horizontal XMAS's equals {result}.")
|
|
|