···
+
from operator import mul, add
+
from functools import reduce
+
file = '6.input' if len(sys.argv) <= 1 else sys.argv[1]
+
for line in open(file).readlines():
+
line = line.strip('\n')
+
for word in line.split(' '):
+
for op_i, op in enumerate(ops):
+
column = [int(c) for i, c in enumerate(columns) if i % len(ops) == op_i]
+
total_wordwise += sum(column)
+
total_wordwise += reduce(mul, column, 1)
+
print(f'p1: {total_wordwise}')
+
op_pos = [i for i, ch in enumerate(op_line) if ch in '+*']
+
for line in open(file).readlines():
+
if line.strip() == op_line.strip(): break
+
words = [line[i:j][:-1] for i, j in zip([0] + op_pos[1:], op_pos[1:] + [None])]
+
for op_i, op in enumerate(ops):
+
cols = [line[i] for i in range(len(lines[0])) if i % len(ops) == op_i for line in lines]
+
digits = [col[i] for i in range(len(cols[0])) for col in cols]
+
numbers = [int(''.join(digits[i:i+len(cols)])) for i in range(0, len(digits), len(cols))]
+
total_digitwise += sum(numbers)
+
total_digitwise += reduce(mul, numbers, 1)
+
print(f'p2: {total_digitwise}')