(Since their solution is now being discussed, it's from here: https://www.reddit.com/r/adventofcode/comments/r66vow/2021_d...)
(Since their solution is now being discussed, it's from here: https://www.reddit.com/r/adventofcode/comments/r66vow/2021_d...)
1⊖x
Rotates the sequence so the first becomes the last. x < 1⊖x
Element-wise compare each, resulting in a list of 1s and 0s ¯1 ↓ x<1⊖x
Drop the last element because it's actually not part of the solution (thanks to the earlier rotation). +/ ¯1↓x<1⊖x
Sum all of them, since it's just 1s and 0s this gives a correct count. Part 2 is solvable (unless I missed something, works on the sample data) by just changing two characters from that solution. Neat.That's an online APL REPL with all the symbols listed at the top, hover to get a tooltip that tells you both how to type it into the REPL and what its name is. I'd forgotten what rotate was because my APL deep-dive was 2 or 3 years ago now. It's handy for discovering the symbols and breaking down the harder-to-understand one-liners (for novices or those unfamiliar with it).
I don't think their second solution actually works unless I'm missing something though : +/¯3↓x<3⊖x
This compares every element to the the one 3 positions before it, when the question was to take the sum of each 3 elements and check if it's smaller than the previous sum.