#!/usr/bin/env python3 # -*- coding: utf-8 -*- 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] askerisk_list = [] 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] == "*": askerisk_list.append([nu[0], z, s]) except IndexError: pass gear_ratio_sum = 0 for i in range(len(askerisk_list)-1): for j in range(i+1, len(askerisk_list)): if askerisk_list[i][1] == askerisk_list[j][1] and askerisk_list[i][2] == askerisk_list[j][2]: gear_ratio_sum += (askerisk_list[i][0]*askerisk_list[j][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) # askerisk_list print() for x in askerisk_list: print(x) # Solution print() print(f"Total GearRatio: {gear_ratio_sum}")