Files
advent-of-code/2025/day06/part1_lexx.py

60 lines
1.8 KiB
Python

from functools import reduce
# обрабатывваем инпут, возвращает karta.
# karta: list[list] = [[123,328,51,64],
# [45,64,387,23],
# [6,98,215,314],
# ['*','+','*','+']]
input = """123 328 51 64
45 64 387 23
6 98 215 314
* + * +
"""
with open("input_lexx.txt", "r") as file:
input = file.read()
karta = []
for row in input.splitlines():
karta.append([])
for elemet in row.split(' '):
# print(elemet)
if elemet == '':
pass
elif elemet == '*':
# print("elemet == '*'",type(elemet))
karta[-1].append(str(elemet))
elif elemet == '+':
# print("elemet == '+'",type(elemet))
karta[-1].append(str(elemet))
else:
# print(type(elemet))
karta[-1].append(int(elemet))
# print("end of row")
# print(karta)
# функция собирающая строчку из списка
stroka: list[int]= []
move: str = ""
final_result: int = 0
print("="*10)
print(f"Предстоит создать и обрабоать {len(karta[0])} строк")
for y in range(len(karta[0])):
print("="*10)
print(f"Обработака строки {y+1}")
for x in range(len(karta)):
if isinstance(karta[x][y],int):
stroka.append(karta[x][y])
else:
move = karta[x][y]
print(stroka)
print("Действие",move)
if move == "+":
result: int= sum(stroka)
print("Результат",result)
elif move == "*":
result: int = reduce((lambda x, y: x * y), stroka)
print("Результат",result)
final_result += result
if y == len(karta[0])-1:
print("="*10)
print("Сумма всех строк",final_result)
stroka: list[int]= []