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

Advent Of Code

736 readers
1 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 2023

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@programming.dev 6 points 9 months 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.

[–] CannotSleep420@lemmygrad.ml 1 points 9 months 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@programming.dev 2 points 9 months ago* (last edited 9 months 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.

[–] CannotSleep420@lemmygrad.ml 1 points 9 months ago (1 children)

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

[–] snowe@programming.dev 1 points 9 months ago

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