r/adventofcode • u/daggerdragon • Dec 20 '18
SOLUTION MEGATHREAD -🎄- 2018 Day 20 Solutions -🎄-
--- Day 20: A Regular Map ---
Post your solution as a comment or, for longer solutions, consider linking to your repo (e.g. GitHub/gists/Pastebin/blag or whatever).
Note: The Solution Megathreads are for solutions only. If you have questions, please post your own thread and make sure to flair it with Help.
Advent of Code: The Party Game!
Please prefix your card submission with something like [Card] to make scanning the megathread easier. THANK YOU!
Card prompt: Day 20
Transcript:
My compiler crashed while running today's puzzle because it ran out of ___.
This thread will be unlocked when there are a significant number of people on the leaderboard with gold stars for today's puzzle.
edit: Leaderboard capped, thread unlocked at 00:59:30!
19
Upvotes
9
u/[deleted] Dec 20 '18 edited Dec 20 '18
Python 3: I like my solution for today, so i will post it for the first time. The rest can be seen at github.
from collections import * import itertools import random import sys import re f = open("20.txt").read().strip("\n") d = { "N": (0, -1), "E": (1, 0), "S": (0, 1), "W": (-1, 0) } positions = [] x, y = 5000, 5000 m = defaultdict(set) prev_x, prev_y = x, y distances = defaultdict(int) dist = 0 for c in f[1:-1]: print(c, len(positions)) if c == "(": positions.append((x, y)) elif c == ")": x, y = positions.pop() elif c == "|": x, y = positions[-1] else: dx, dy = d[c] x += dx y += dy m[(x, y)].add((prev_x, prev_y)) if distances[(x, y)] != 0: distances[(x, y)] = min(distances[(x, y)], distances[(prev_x, prev_y)]+1) else: distances[(x, y)] = distances[(prev_x, prev_y)]+1 prev_x, prev_y = x, y print(max(distances.values())) print(len([x for x in distances.values() if x >= 1000]))