2017-12-02 - Corruption Checksum
(original .ipynb)
puzzle_input_str = open("puzzle_input/day2.txt").read()
def part_one(input_str):
lines = input_str.split("\n")
csum = 0
for line in lines:
cols = [ int(col) for col in line.split("\t") ]
min_col = min(cols)
max_col = max(cols)
csum += (max_col - min_col)
return csum
print("part one:", part_one(puzzle_input_str))
part one: 37923
def divisible(x, y):
return x % y == 0
def values_excluding_index(lst, idx):
values = lst[:idx]
if idx < len(lst):
values += lst[idx+1:]
return values
def part_two(input_str):
lines = input_str.split("\n")
csum = 0
for line in lines:
cols = [ int(col) for col in line.split("\t") ]
for i in range(len(cols)):
col = cols[i]
csum += sum([ int(col / n) for n in values_excluding_index(cols, i) if divisible(col, n) ])
return csum
print("part two:", part_two(puzzle_input_str))
part two: 263