Spyke

Syndicated from the fediverse. Read and engage on the original instance.

View original on programming.dev

16 replies

The naïve and unoptimized version ran in under 4 seconds for me, that's nowhere near "Time to knuckle down and actually optimize this" territory.

27

I was so confused just now thinking this was about day 5. Like "What the f do you consider naïve that takes less than four seconds??"

3

There is a trap in part 2, by the way, that can trip people who try to use maths:

::: spoiler Spoiler The values are so large that if one uses single precision (32 bit) floating point values, the result will not be correct. Double precision floats yield the correct result. :::

This means, that doing integer calculations isn't as bad as it sounds at first.

3
feddit.de

Just use dictionaries in Python. Never worry about search performance any more.

3
bob_lemonreply
feddit.de

I mean, that literally failed just yesterday.

Also I'm not sure where in today's problem you would even use a dictionary

10
Zagorathreply
aussie.zone

Hey, I haven't been doing Advent this year. What was day 5's problem and why did dicts fail?

1
bob_lemonreply
feddit.de

There was a series of number ranges that mapped onto other ranges. The simple approach was filling dictionaries, which worked well for the example data. In the actual data, there ranges were much much larger (in the 100,000,000's), which made the dictionaries prohibitively large.

3

If each number was 8 bytes wide, it would require, if I didn't mess up my math, 18 GB to fully represent all seeds/numbers as an array.

1
kbin.social

If you don't know the meaning of a word, you can literally Google "{The word you don't know} definition." Google.com is a really handy and easily-accessed dictionary.

-12

You reached the end

[2023 Day 6] No optimization needed | Spyke