diff --git a/2025/day06/part2.py b/2025/day06/part2.py index ab4b962..4e07b23 100644 --- a/2025/day06/part2.py +++ b/2025/day06/part2.py @@ -2,23 +2,74 @@ input = """123 328 51 64 45 64 387 23 6 98 215 314 * + * + """ -# with open("input.txt", "r") as file: -# input = file.read() -numbers = [list(map(str, row)) for row in input.splitlines()[:-1]] -print(numbers) + +with open("input.txt", "r") as file: + input = file.read() + operators = input.splitlines()[-1] -print(operators) -# result = [row for row in numbers[0]] -# for row in numbers[1:]: -# for index in range(len(result)): -# element = row[index] -# op = operators[index] -# if op == "*": -# result[index] *= element -# elif op == "+": -# result[index] += element -# count = 0 -# for row in result: -# count += row -# print(result) -# print(count) +numbers = input.splitlines()[:-1] + +# определяем начальные позиции операторов +start_positions = [] +# проходим по строке операторов и записываем индексы всех непробельных символов +for index, char in enumerate(operators): + if char != ' ': + start_positions.append(index) + +print(f"Стартовые позиции для каждой колонки: {start_positions}") + +space_between = operators.replace("*","|").replace("+","|").split("|")[1:] +operators = operators.split() +# считаю количество символов для каждого элемента в списке +space_dig = [] +for i in space_between: + space_dig.append(len(i)) +#добавляем для последнего элемента в списке +1, потому что он не учитывается +space_dig[-1] = space_dig[-1] + 1 +print(f"Количество символов для каждой строки: {space_dig}") +temp_data = [] +for row in numbers: + row_data = [] + for col_index, start_pos in enumerate(start_positions): + if col_index + 1 < len(start_positions): + end_pos = start_positions[col_index + 1] + cell_value = row[start_pos:end_pos] + else: + cell_value = row[start_pos:] + row_data.append(cell_value[:space_dig[col_index]]) + temp_data.append(row_data) + +result_data = [['' for __ in range(len(numbers))] for _ in range(len(space_dig))] +print(f"количество строк чисел в массиве: {len(numbers)}, количество чисел в строке: {len(space_dig)}") +# print("="*100) +# print(result_data) +print(space_dig) +for i, row in enumerate(temp_data): + print(f"Строчка {i+1}: {row}, операторы: {operators}, сколько элементов в каждой колонке: {space_dig[i]}") + for ii, r in enumerate(row): + for y in range(space_dig[ii]): + # print(y, space_dig[i]) + result_data[ii][y] += r[y] + +print(result_data) + +# [['1 ','24 ', '356'], ['369', '248', '8 '], [' 32', '581', '175'], ['623', '431', ' 4']] +new_result = [[] for _ in range(len(space_dig))] +count = 0 +for row, op in zip(result_data, operators): + temp = int(row[0]) + for i in row[1:]: + if i != "": + if op == "*": + temp *= int(i) + elif op == "+": + temp += int(i) + new_result[count] = temp + count += 1 + # print(new_result) + +count_new = 0 +for row in new_result: + count_new += row +print(new_result) +print(count_new)