From 19019f09d6f61b4b7ab3531d3d47f2778f0ecbd3 Mon Sep 17 00:00:00 2001 From: tebarius Date: Sun, 3 Dec 2023 14:42:49 +0100 Subject: [PATCH] 03-2 fertig --- 03/03-1.py | 23 ++++++++++++++--- 03/03-2.py | 75 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 95 insertions(+), 3 deletions(-) create mode 100644 03/03-2.py diff --git a/03/03-1.py b/03/03-1.py index 484c54f..b72b4bc 100644 --- a/03/03-1.py +++ b/03/03-1.py @@ -4,7 +4,7 @@ part_sum = 0 matrix = [] -input_file = open("input-ex.txt", "r") +input_file = open("input.txt", "r") for line in input_file: matrix.append(line.strip()) input_file.close() @@ -18,14 +18,14 @@ for z in range(zeilen): num_start, num_end = 0, 0 num = "" for s in range(spalten): - if matrix[z][s].isdigit() and s == spalten-1: + 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_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(): @@ -35,10 +35,24 @@ for z in range(zeilen): 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() @@ -46,3 +60,6 @@ print() # num_list ausgabe for n in num_list: print(n) + +# Solution: +print(f"Lösung: {part_sum}") diff --git a/03/03-2.py b/03/03-2.py new file mode 100644 index 0000000..7c951a9 --- /dev/null +++ b/03/03-2.py @@ -0,0 +1,75 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- + +gear_ratio_sum = 0 +matrix = [] + +input_file = open("input.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 + +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}")