def get_data(): puzzle_data = get_input(YEAR, DAY).strip().split("\n") return [ Line(*map(int, re.match("^(\d+),(\d+) -> (\d+),(\d+)$", l).groups())) for l in puzzle_data ]
def main(): puzzle_in = build_bag_graph(get_input(YEAR, DAY).strip().split("\n")) for i, f in enumerate((sol0, sol1)): res = f(puzzle_in) if res is None: continue print(f"===[AoC 2020, {DAY}.{i} result:]===\n{res}\n" f"{'='*len(str(DAY))}============================")
def main(): puzzle_in = [int(i) for i in get_input(YEAR, DAY).split(",")] for i, f in enumerate((sol0, sol1)): res = f(puzzle_in) if res is None: continue print(f"===[AoC 2020, {DAY}.{i} result:]===\n{res}\n" f"{'='*len(str(DAY))}============================")
def main(): puzzle_in = get_input(YEAR, DAY).strip().split("\n\n") puzzle_in = ( [int(i) for i in puzzle_in[0].split(",")], [[[int(x) for x in row.split()] for row in board.split("\n")] for board in puzzle_in[1:]], ) ah.print_solution(puzzle_in, DAY, YEAR, sol0, sol1)
def main(): puzzle_in = {int(i) for i in get_input(YEAR, DAY).strip().split("\n")} puzzle_in.add(max(puzzle_in) + 3) for i, f in enumerate((sol0, sol1)): res = f(puzzle_in.copy()) if res is None: continue print(f"===[AoC 2020, {DAY}.{i} result:]===\n{res}\n" f"{'='*len(str(DAY))}============================")
def main(): puzzle_in = get_input(YEAR, DAY) puzzle_in = [[w.split(":") for w in l.strip().split()] for l in puzzle_in.split("\n\n")] for i, f in enumerate((sol0, sol1)): res = f(puzzle_in) if res is None: continue print(f"===[AoC 2020, {DAY}.{i} result:]===\n{res}\n" f"{'='*len(str(DAY))}============================")
def main(): puzzle_in = get_input(YEAR, DAY).strip().split("\n") for i, f in enumerate((sol0, sol1)): res = f(puzzle_in) res = res[0] if i == 0 else res if res is None: continue print( f"===[AoC 2020, {DAY}.{i} result:]===\n{res}\n" f"{'='*len(str(DAY))}============================" )
def main(): puzzle_in = get_input(YEAR, DAY).strip().split("\n") puzzle_in = (int(puzzle_in[0]), [ int(i) if i.isnumeric() else None for i in puzzle_in[1].split(",") ]) for i, f in enumerate((sol0, sol1)): res = f(*puzzle_in) if res is None: continue print(f"===[AoC 2020, {DAY}.{i} result:]===\n{res}\n" f"{'='*len(str(DAY))}============================")
def main(): puzzle_in = get_input(YEAR, DAY).strip().split("\n\n") puzzle_in = tuple( (*map(int, half.split("\n")[1:]),) for half in puzzle_in ) for i, f in enumerate((sol0, sol1)): res = f(puzzle_in) if i == 0 else f(puzzle_in)[1] if res is None: continue print( f"===[AoC 2020, {DAY}.{i} result:]===\n{res}\n" f"{'='*len(str(DAY))}============================" )
def main(): puzzle_in = get_input(YEAR, DAY).strip().split("\n") puzzle_in = [([*map(str.strip, line.split("(")[0].split())], {*map(str.strip, RE_ALLERGENS.search(line)[1].split(","))}) for line in puzzle_in] ing_all_map = build_ing_all_map(puzzle_in) for i, f in enumerate((sol0, sol1)): res = f(puzzle_in, ing_all_map) if res is None: continue print(f"===[AoC 2020, {DAY}.{i} result:]===\n{res}\n" f"{'='*len(str(DAY))}============================")
def main(): puzzle_in = get_input(YEAR, DAY).strip().split("\n") seats = np.zeros((len(puzzle_in), len(puzzle_in[0])), dtype=np.uint8) for y, (npline, lsline) in enumerate(zip(seats, puzzle_in)): for x, char in enumerate(lsline): if char == "L": seats[y, x] = STATE.FREE elif char == "#": seats[y, x] = STATE.OCCUPIED for i, f in enumerate((sol0, sol1)): res = f(seats) if res is None: continue print(f"===[AoC 2020, {DAY}.{i} result:]===\n{res}\n" f"{'='*len(str(DAY))}============================")
def main(): puzzle_in = [ block.split("\n") for block in get_input(YEAR, DAY).strip().split("\n\n") ] tiles = [ Tile(block[1:], int(RE_NUM.search(block[0])[0])) for block in puzzle_in ] for i, f in enumerate((sol0, sol1)): res = f(tiles) if res is None: continue print( f"===[AoC 2020, {DAY}.{i} result:]===\n{res}\n" f"{'='*len(str(DAY))}============================" )
def main(): txtrules, data = get_input(YEAR, DAY).strip().split("\n\n") txtrules = txtrules.strip().split("\n") data = data.strip().split("\n") rules = {} for rawline in txtrules: colp, colb = map(str.strip, rawline.split(":")) id_ = int(colp) if "\"" in colb: rules[id_] = RE_TERM.findall(colb)[0][0] else: alternatives = [*map(str.strip, colb.split("|"))] rules[id_] = tuple( tuple(map(int, alt.strip().split())) for alt in alternatives) for i, f in enumerate((sol0, sol1)): res = f(rules, data) if res is None: continue print(f"===[AoC 2020, {DAY}.{i} result:]===\n{res}\n" f"{'='*len(str(DAY))}============================")
def main(): puzzle_in = get_input(YEAR, DAY).strip().split("\n\n") ticket_rules = [RE_TICKET.match(line) for line in puzzle_in[0].split("\n")] ticket_rules = { match[1]: ( range(int(match[2]), int(match[3]) + 1), range(int(match[4]), int(match[5]) + 1), ) for match in ticket_rules } own_ticket = [int(i) for i in puzzle_in[1].split("\n")[1].split(",")] other_tickets = [[int(i) for i in line.split(",")] for line in puzzle_in[2].split("\n")[1:]] for i, f in enumerate((sol0, sol1)): res = f(ticket_rules, own_ticket, other_tickets) if res is None: continue if i == 0: res = res[0] print(f"===[AoC 2020, {DAY}.{i} result:]===\n{res}\n" f"{'='*len(str(DAY))}============================")
def main(): puzzle_in = get_input(YEAR, DAY).strip().split("\n") puzzle_in = [(x[0], int(x[1])) for x in (l.split() for l in puzzle_in)] ah.print_solution(puzzle_in, DAY, YEAR, sol0, sol1)
def get_data(): return [int(x) for x in get_input(YEAR, DAY).strip().split(",")]
def main(): puzzle_in = get_input(YEAR, DAY).strip().split("\n") ah.print_solution(puzzle_in, DAY, YEAR, sol0, sol1)
import importlib import sys from aoc_input import get_input if __name__ == "__main__": if len(sys.argv) < 3: print("Specify which visualization to run! [year, day]") sys.exit() try: year = int(sys.argv[1]) day = int(sys.argv[2]) except ValueError: print("Integer required!") sys.exit() module = importlib.import_module(f"y{year}.vis.v{day:>02}") module.main(get_input(year, day))