вторая задача решена

This commit is contained in:
2025-12-06 20:36:55 +03:00
parent 120fe2e2d6
commit 94f62c2fba

View File

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