Files
AdventOfCode2023/03/03-2.py
2023-12-05 20:01:21 +01:00

75 lines
1.9 KiB
Python

#!/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}")