2024(4): getting there, but not yet
This commit is contained in:
@ -1,3 +1,5 @@
|
|||||||
|
import itertools
|
||||||
|
|
||||||
|
|
||||||
def scan_line(line):
|
def scan_line(line):
|
||||||
to_find = "XMAS"
|
to_find = "XMAS"
|
||||||
@ -5,9 +7,19 @@ def scan_line(line):
|
|||||||
return line.count(to_find)
|
return line.count(to_find)
|
||||||
|
|
||||||
def transpose(list_2d):
|
def transpose(list_2d):
|
||||||
return list(zip(*list_2d))
|
#return list(zip(*list_2d))
|
||||||
|
#return list(map(list, zip(*list_2d)))
|
||||||
|
#return list(map(list, itertools.zip_longest(*list_2d, fillvalue=None)))
|
||||||
|
outlist = []
|
||||||
|
for j in range(len(list_2d[0])):
|
||||||
|
outlist.append([])
|
||||||
|
for i in range(len(list_2d)):
|
||||||
|
outlist[j].append(list_2d[i][j])
|
||||||
|
outlist[j] = "".join(outlist[j])
|
||||||
|
return outlist
|
||||||
|
|
||||||
def rotate(list_2d):
|
def rotate(list_2d):
|
||||||
|
#print(list_2d)
|
||||||
x_max, y_max = len(list_2d), len(list_2d[0])
|
x_max, y_max = len(list_2d), len(list_2d[0])
|
||||||
diagonal_list = []
|
diagonal_list = []
|
||||||
|
|
||||||
@ -16,21 +28,22 @@ def rotate(list_2d):
|
|||||||
substring = ""
|
substring = ""
|
||||||
x = i
|
x = i
|
||||||
y = 0
|
y = 0
|
||||||
#while x < x_max and y < y_max:
|
while x < x_max and y < y_max:
|
||||||
# TODO: Snapperniksvan -- Kees
|
#print(x, x_max, y, y_max)
|
||||||
while x < x_max and y < len(list_2d[x]):
|
|
||||||
print(x, x_max, y, y_max)
|
|
||||||
substring += list_2d[x][y]
|
substring += list_2d[x][y]
|
||||||
x += 1
|
x += 1
|
||||||
y += 1
|
y += 1
|
||||||
diagonal_list.append(substring)
|
diagonal_list.append(substring)
|
||||||
|
|
||||||
|
# Reverse
|
||||||
|
diagonal_list = diagonal_list[::-1]
|
||||||
|
|
||||||
# Diagonals starting from (0,1), for the first column.
|
# Diagonals starting from (0,1), for the first column.
|
||||||
for j in range(1, y_max):
|
for j in range(1, y_max):
|
||||||
substring = ""
|
substring = ""
|
||||||
x = 0
|
x = 0
|
||||||
y = j
|
y = j
|
||||||
while x < x_max and y < y_max:
|
while x < x_max and y < len(list_2d[x]):
|
||||||
substring += list_2d[x][y]
|
substring += list_2d[x][y]
|
||||||
x += 1
|
x += 1
|
||||||
y += 1
|
y += 1
|
||||||
@ -42,7 +55,8 @@ if __name__ == "__main__":
|
|||||||
result = 0
|
result = 0
|
||||||
|
|
||||||
with open("input", "r") as fp:
|
with open("input", "r") as fp:
|
||||||
full_string = fp.read().split("\n")
|
# Skip last line as it is empty
|
||||||
|
full_string = fp.read().split("\n")[:-1]
|
||||||
for line in full_string:
|
for line in full_string:
|
||||||
result += scan_line(line)
|
result += scan_line(line)
|
||||||
result += scan_line(line[::-1])
|
result += scan_line(line[::-1])
|
||||||
@ -54,7 +68,8 @@ if __name__ == "__main__":
|
|||||||
for line in full_string:
|
for line in full_string:
|
||||||
result += scan_line(line)
|
result += scan_line(line)
|
||||||
result += scan_line(line[::-1])
|
result += scan_line(line[::-1])
|
||||||
for line in transpose(full_string):
|
print(result)
|
||||||
|
for line in rotate(transpose(full_string)):
|
||||||
result += scan_line(line)
|
result += scan_line(line)
|
||||||
result += scan_line(line[::-1])
|
result += scan_line(line[::-1])
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user