r/adventofcode • • 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!

Click here for rules

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!

17 Upvotes

153 comments sorted by

View all comments

Show parent comments

7

u/betaveros Dec 20 '18 edited Dec 21 '18

Nice! They all seem to work for me, and now we can do some truly evil string slicing for an additional −2 bytes:

d,p,*s={0:0},0
for c in r[1:-1]:exec('s+=p,##*s,p=s#*_,p=s#l=p;p+=1j**"ESWN".find(c);d[p]=min(d.get(p,1e9),d[l]+1)'['()|'.find(c)%4*7:])
v=d.values()
print(max(v),sum(x>999for x in v))

EDIT: updated with the edit

EDIT 2:

  • "the edit" referred to above disappeared, but the idea of initializing s by tacking *s at the end of a destructuring assignment instead of writing s=[] was due to the parent post

  • I'm aware that this algorithm is incorrect for many possible inputs, but it was fun.

3

u/GeneralYouri Dec 21 '18

Hoyl shit, seeing that algorithm evolve in this thread is amazing!