03-2 fertig

This commit is contained in:
2023-12-03 14:42:49 +01:00
parent 212012045b
commit 19019f09d6
2 changed files with 95 additions and 3 deletions

View File

@@ -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}")

75
03/03-2.py Normal file
View File

@@ -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}")