66 lines
1.6 KiB
Python
66 lines
1.6 KiB
Python
#!/usr/bin/env python3
|
|
# -*- coding: utf-8 -*-
|
|
|
|
part_sum = 0
|
|
matrix = []
|
|
|
|
input_file = open("input-ex.txt", "r")
|
|
for line in input_file:
|
|
matrix.append(line.strip())
|
|
input_file.close()
|
|
|
|
zeilen = len(matrix)
|
|
spalten = len(matrix[0])
|
|
|
|
num_list = []
|
|
for z in range(zeilen):
|
|
pre_is_num = False
|
|
num_start, num_end = 0, 0
|
|
num = ""
|
|
for s in range(spalten):
|
|
if matrix[z][s].isdigit() and s == spalten - 1:
|
|
num += matrix[z][s]
|
|
if num_start == 0:
|
|
num_start = s
|
|
num_end = s
|
|
num_list.append([int(num), z, num_start, num_end])
|
|
elif pre_is_num and not matrix[z][s].isdigit():
|
|
num_end = s - 1
|
|
num_list.append([int(num), z, num_start, num_end])
|
|
pre_is_num = False
|
|
elif not pre_is_num and matrix[z][s].isdigit():
|
|
num = matrix[z][s]
|
|
num_start = s
|
|
pre_is_num = True
|
|
elif pre_is_num:
|
|
num += matrix[z][s]
|
|
|
|
for nu in num_list:
|
|
ist_teil = False
|
|
for z in range(nu[1]-1, nu[1]+2):
|
|
for s in range(nu[2]-1, nu[3]+2):
|
|
try:
|
|
if matrix[z][s] != "." and not matrix[z][s].isdigit():
|
|
ist_teil = True
|
|
except IndexError:
|
|
pass
|
|
if ist_teil:
|
|
part_sum += nu[0]
|
|
|
|
# ######### AUSGABE #########################################################
|
|
# Matrix-Ausgabe
|
|
for x in matrix:
|
|
print(x)
|
|
|
|
print()
|
|
print(f"Zeilen: {zeilen}")
|
|
print(f"Spalten: {spalten}")
|
|
print()
|
|
|
|
# num_list ausgabe
|
|
for n in num_list:
|
|
print(n)
|
|
|
|
# Solution:
|
|
print(f"Lösung: {part_sum}")
|