this post was submitted on 03 Dec 2023
2 points (100.0% liked)

Advent Of Code

981 readers
23 users here now

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.

AoC 2024

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

Rules/Guidelines

Relevant Communities

Relevant Links

Credits

Icon base by Lorc under CC BY 3.0 with modifications to add a gradient

console.log('Hello World')

founded 1 year ago
MODERATORS
 

I know I'm not the only one finding day 3 frustrating.

My current code for day 3 is here. I find the locations of all of the special symbols, check around them to get the numbers, and dedup the list of numbers I find. To make things easier to debug, I generated some supplementary text files. One shows the input I used, but with all of the numbers I used replaced with 'x's: the output doesn't suggest any problems with my code that are obvious. The other has each number that went into the sum on its own line. I checked a few of these numbers and they seemed correct, but there are too many to check by hand.

What could I be doing wrong? I've officially run out of ideas.

top 5 comments
sorted by: hot top controversial new old
[–] damium 6 points 1 year ago (1 children)

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.

[–] [email protected] 1 points 1 year ago (1 children)

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.

[–] snowe 2 points 1 year ago* (last edited 1 year ago) (1 children)

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.

[–] [email protected] 1 points 1 year ago (1 children)

I thought my checked_coord_set already made sure numbers next to more than one symbol were only counted once.

[–] snowe 1 points 1 year ago

If you’re already doing that and you’re deduping the list then you’re doing too much.