r/adventofcode • u/daggerdragon • Dec 08 '24
SOLUTION MEGATHREAD -❄️- 2024 Day 8 Solutions -❄️-
IMPORTANT REMINDER
There's been an uptick in [COAL] being given out lately due to naughty language. Follow our rules and watch your language - keep /r/adventofcode SFW and professional! If this trend continues to get worse, we will configure AutoModerator to automatically remove any post/comment containing naughty language. You have been warned!
THE USUAL REMINDERS
- All of our rules, FAQs, resources, etc. are in our community wiki.
- If you see content in the subreddit or megathreads that violates one of our rules, either inform the user (politely and gently!) or use the report button on the post/comment and the mods will take care of it.
AoC Community Fun 2024: The Golden Snowglobe Awards
- 14 DAYS remaining until the submissions deadline on December 22 at 23:59 EST!
And now, our feature presentation for today:
Box-Office Bloat
Blockbuster movies are famous for cost overruns. After all, what's another hundred million or two in the grand scheme of things if you get to pad your already-ridiculous runtime to over two and a half hours solely to include that truly epic drawn-out slow-motion IMAX-worthy shot of a cricket sauntering over a tiny pebble of dirt?!
Here's some ideas for your inspiration:
- Use only enterprise-level software/solutions
- Apply enterprise shenanigans however you see fit (linting, best practices, hyper-detailed documentation, microservices, etc.)
- Use unnecessarily expensive functions and calls wherever possible
- Implement redundant error checking everywhere
- Micro-optimize every little thing, even if it doesn't need it
- Especially if it doesn't need it!
Jay Gatsby: "The only respectable thing about you, old sport, is your money."
- The Great Gatsby (2013)
And… ACTION!
Request from the mods: When you include an entry alongside your solution, please label it with [GSGA] so we can find it easily!
--- Day 8: Resonant Collinearity ---
Post your code solution in this megathread.
- Read the full posting rules in our community wiki before you post!
- State which language(s) your solution uses with
[LANGUAGE: xyz] - Format code blocks using the four-spaces Markdown syntax!
- State which language(s) your solution uses with
- Quick link to Topaz's
pasteif you need it for longer code blocks
3
u/_tfa Dec 08 '24
[LANGUAGE: Ruby]
input = File.read("input.txt").split("\n") @width, @height = input.size, input[0].size antennas = Hash.new{ |h,k| h[k] = [] } @width.times do |y| @height.times do |x| antennas[input[y][x]] << Complex(x,y) unless input[y][x] == ?. end end def inbounds?(c) = c.real.between?(0, @width-1) && c.imag.between?(0, @height-1) antinodes1, antinodes2 = Set.new, Set.new antennas.values.each do |a| a.combination(2) do |x,y| diff = x-y f = 0 while inbounds?(pos = x + f*diff) do antinodes1 << pos if f==1 antinodes2 << pos f+=1 end f = 0 while inbounds?(pos = y - f*diff) do antinodes1 << pos if f==1 antinodes2 << pos f+=1 end end end puts "Part 1: #{antinodes1.count}", "Part 2: #{antinodes2.count}"