21
๐ฆ - 2023 DAY 9 SOLUTIONS -๐ฆ
(programming.dev)
An unofficial home for the advent of code community on programming.dev!
Advent of Code is an annual Advent calendar of small programming puzzles for a variety of skill sets and skill levels that can be solved in any programming language you like.
Solution Threads
M | T | W | T | F | S | S |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 |
Icon base by Lorc under CC BY 3.0 with modifications to add a gradient
console.log('Hello World')
Raku
First time using Grammar Actions Object to make parsing a little cleaner. I thought about not keeping track of the left and right values (and I originally didn't for part 1), but I think keeping track allows for an easier to understand solution.
View code on github
edit: although I don't know why
@values.all != 0
evaluates to true why any value is not zero. I thought that@values.any != 0
would do that, but it seems that their behavior is flipped from my expectations.edit2: Oh, I think I understand now.
!=
is a shortcut for!==
, and!==
is actually the equality operator that is then negated. You can negate most relational operators in Raku by prefixing them with!
. So the junction is actually binding to the==
equality operator and not the!==
inequality operator. Therefore@values.all != 0
becomes!(@values.all == 0)
. I'm not sure why they would choose this order of operations, though.edit3: Ah, it's in the documentation, so it's not even an oversight. https://github.com/rakudo/rakudo/issues/3748
Code (probably still doesn't render correctly)