aoc_source(day =6, part =2)input=aoc_read(day =6)aoc_run(solve_day6_part2(input))
Elapsed: 0.018 seconds
Memory: 745 KB
— Python Day 6 Part 1 —
from math import proddef solve_day6_part1(text): text = [line.rstrip().split() for line in text] nrows =len(text) nums = text[:(nrows-1)] ops = text[nrows-1] ans =0 n_problems =len(nums[0])for i inrange(n_problems): group = []for row inrange(nrows-1): group += [int(nums[row][i])]if ops[i] =="+": ans +=sum(group)else: ans += prod(group)return(ans)
Run
aoc_source(day =6, part =1)input= aoc_read(day =6)result = aoc_run("solve_day6_part1(input)")
Elapsed: 0.019 seconds
Memory: 229 KB
— Python Day 6 Part 2 —
from math import proddef solve_day6_part2(text): text = [[*line.rstrip("\n")] for line in text] nrows =len(text) nums = text[:(nrows-1)] ops_row = text[nrows-1] starts = [i for i, val inenumerate(ops_row) if val !=" "] n_problems =len(starts) ops = [ops_row[i] for i in starts] ncols =len(nums[1]) ends = [pos -1for pos in starts[1:]] ends += [ncols] v_nums = [""for _ inrange(ncols)]for col inrange(ncols):for row inrange(nrows-1): v_nums[col] += nums[row][col] groups = [v_nums[start:end] for start, end inzip(starts, ends)] ans =0for i inrange(n_problems): group = [int(num) for num in groups[i]]if ops[i] =="+": ans +=sum(group)else: ans += prod(group)return ans
Run
aoc_source(day =6, part =2)input= aoc_read(day =6)result = aoc_run("solve_day6_part2(input)")