Sean McLemon | Advent of Code

Home | Czech | Blog | GitHub | Advent Of Code | Notes


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