Files
AdventOfCode2023/13/13-1.py
2023-12-13 20:34:08 +01:00

81 lines
1.8 KiB
Python

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
data = []
# parse input
input_file = open("input", "r")
pattern = []
for line in input_file:
line = line.strip()
if line == "":
data.append(pattern)
pattern = []
else:
pattern.append(line)
data.append(pattern)
input_file.close()
'''
for i in range(len(data)):
for _ in data[i]:
print(_)
print("================")
'''
def find_vertikal_mirror(matrix):
#print(type(matrix), matrix)
#print(type(matrix[0]), matrix[0], len(matrix[0]))
for s in range(1, len(matrix[0])):
#print((len(matrix[0])))
is_mirror = True
for z in matrix:
#print("z",z)
if s <= len(z) / 2:
p1 = z[:s]
p2 = z[s:]
p2 = p2[:s]
p2 = p2[::-1]
# print("1: ",s,p1,"__",p2)
else:
p2 = z[s:]
p1 = z[:s]
p1 = p1[::-1]
p1 = p1[:len(p2)]
# print("2: ",s,p1,p2)
# print(p1,p2)
if p1 != p2:
is_mirror = False
if is_mirror:
return s
return 0
def find_horizontal_mirror(matrix):
new_matrix = []
for j in range(len(matrix[0])):
new_matrix.append("".join([matrix[k][j] for k in range(len(matrix)-1,-1,-1)]))
#for n in new_matrix:
# print(n)
print("_____________________")
t = find_vertikal_mirror(new_matrix)
if t<=len(matrix[0])/2:
return t+1
else:
return t
solution = 0
for m in data:
#print(m)
horz =0
for mn in m:
print(mn)
vert = find_vertikal_mirror(m)
if vert == 0:
horz = find_horizontal_mirror(m)
print(vert, horz)
solution += 100 * horz
solution += vert
print("Lösung:", solution)