03-2 fertig
This commit is contained in:
23
03/03-1.py
23
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}")
|
||||
|
||||
75
03/03-2.py
Normal file
75
03/03-2.py
Normal 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}")
|
||||
Reference in New Issue
Block a user