Sean McLemon | Advent of Code

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


2015-12-03 - Perfectly Spherical Houses in a Vacuum

(original .ipynb)
puzzle_input_str = open("./puzzle_input/day3.txt").read()

directions = { 
    "^": (-1,  0),
    "v": ( 1,  0),
    "<": ( 0, -1),
    ">": ( 0,  1),
}


def part_one(input_str):
    x, y = 0, 0
    houses = set()
    houses.add((0, 0))
    
    for instr in input_str:       
        dx, dy = directions[instr]
        x += dx
        y += dy
        houses.add((x,y))

    return len(houses)


assert 2 == part_one(">")
assert 4 == part_one("^>v<")
assert 2 == part_one("^v^v^v^v^v")

print("part one:", part_one(puzzle_input_str))
part one: 2081
def part_two(input_str):
    santa_positions = [
        (0, 0),
        (0, 0)
    ]
    houses = set()
    houses.add((0, 0))
    
    for i, instr in enumerate(input_str):
        santa = i % 2
        dx, dy = directions[instr]
        x, y = santa_positions[santa]
        houses.add((x + dx, y + dy))
        santa_positions[santa] = (x + dx, y + dy)

    return len(houses)


assert 3 == part_two("^v")
assert 3 == part_two("^>v<")
assert 11 == part_two("^v^v^v^v^v")

print("part_two:", part_two(puzzle_input_str))
part_two: 2341