Day 18 - Advent of Code 2022

Working solutions for the day 18 puzzles.

Part One

""" day_18_01.py """

# usage: python3 day_18_01.py < input


import sys


def parse(data):
    """ generate object """
    return {tuple(map(int, i.split(','))) for i in data.splitlines()}


def neighbours(qube):
    """ calculate neighbouring qubes """
    deltas = [(0, 0, 1), (0, 0, -1), (0, -1, 0), (0, 1, 0),
              (1, 0, 0), (-1, 0, 0)]
    x, y, z, = qube
    return {(x + dx, y + dy, z + dz) for dx, dy, dz in deltas}


lava = parse(sys.stdin.read())

adjacent = 0
for cube in lava:
    adjacent += len(neighbours(cube) & lava)
print(6 * len(lava) - adjacent)

Part Two

# standby ...