···
2
+
from operator import mul, add
3
+
from functools import reduce
7
+
file = '6.input' if len(sys.argv) <= 1 else sys.argv[1]
13
+
for line in open(file).readlines():
14
+
line = line.strip('\n')
15
+
for word in line.split(' '):
16
+
if not word: continue
21
+
columns.append(word)
23
+
for op_i, op in enumerate(ops):
24
+
column = [int(c) for i, c in enumerate(columns) if i % len(ops) == op_i]
26
+
total_wordwise += sum(column)
28
+
total_wordwise += reduce(mul, column, 1)
30
+
print(f'p1: {total_wordwise}')
33
+
op_pos = [i for i, ch in enumerate(op_line) if ch in '+*']
34
+
for line in open(file).readlines():
35
+
if line.strip() == op_line.strip(): break
36
+
words = [line[i:j][:-1] for i, j in zip([0] + op_pos[1:], op_pos[1:] + [None])]
39
+
for op_i, op in enumerate(ops):
40
+
cols = [line[i] for i in range(len(lines[0])) if i % len(ops) == op_i for line in lines]
41
+
digits = [col[i] for i in range(len(cols[0])) for col in cols]
42
+
numbers = [int(''.join(digits[i:i+len(cols)])) for i in range(0, len(digits), len(cols))]
44
+
total_digitwise += sum(numbers)
46
+
total_digitwise += reduce(mul, numbers, 1)
48
+
print(f'p2: {total_digitwise}')