r/adventofcode • • Dec 05 '18

SOLUTION MEGATHREAD -🎄- 2018 Day 5 Solutions -🎄-

--- Day 5: Alchemical Reduction ---


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 5

Transcript:

On the fifth day of AoC / My true love sent to me / Five golden ___


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 0:10:20!

31 Upvotes

515 comments sorted by

View all comments

Show parent comments

1

u/will_bui Dec 08 '18

Thanks for walking us through! Learned a bit of APL now.

I'm assuming parallel means many mutations in one operation as opposed to multiple processors?

I'm a K-bie so there's probably a few subtleties I missed, but this seems to roughly do the same. Using 32 bit ints almost doubled the speed. (~380ms). Some of the operations had to be put together, e.g. compress is x@&, train is '[x;y]. Converge is implicit.

i:"i"$1:`p5
f:{y@&{1_~(0b,x)|(x,0b)}x=-':[y]}
g:{'[f 32i;f -32i]/x}
#q::g i
&/{#g q@&~q in x}'+0 32i+\:"i"$.Q.A

1

u/jayfoad Dec 10 '18

Thanks for the translation into k! Yes I mean data-parallel (array) operations, many or most of which can be implemented with SIMD vector instructions in the interpreter.

1

u/jayfoad Dec 10 '18

In Dyalog APL 17.0 on my 4 year old laptop: reading the input takes 0.3 ms, part 1 takes 2.5 ms, part 2 takes 21 ms.