If I'm reading it right I think the issue is using a HashSet to store the list of numbers for the sum. Some of the input numbers are repeated and the set discards them.
I could be wrong though as I only just started learning rust for AoC.
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')
If I'm reading it right I think the issue is using a HashSet to store the list of numbers for the sum. Some of the input numbers are repeated and the set discards them.
I could be wrong though as I only just started learning rust for AoC.
I originally used a Vec instead (so repeats are allowed) and my answer was still wrong. Whether or not the part numbers are supposed to be unique is something the problem didn't specify.
Any given number has a set of “coordinates”. That exact number can’t be repeated, even if it’s surrounded by symbols. But that number might be elsewhere in the list.
edit:
here's an example:
1.1
.##
2.3
would give you a total of 7
, because 1 and 1 are two different parts in the parts list. But the 1
in the top right is next two symbols, so you still only count it once. It's just a single part! Think of them as parts rather than numbers. Each part is a different thing, even if they have the same name.
I thought my checked_coord_set
already made sure numbers next to more than one symbol were only counted once.
If you’re already doing that and you’re deduping the list then you’re doing too much.