81 lines
1.8 KiB
Python
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)
|