DEV Community

Cover image for Advent of Code '24 - Day9: Disk Fragmenter (Python)
Grant Riordan
Grant Riordan

Posted on

Advent of Code '24 - Day9: Disk Fragmenter (Python)

Advent of Code Day 9: Disk Fragmenter

Today's solution was only done in Python today, as tbh, i'm finding it hard to find the time to write in both Python and C# as well as a write-up, so opting to do one of the other going forward.

Part 1

This was fairly straight forward, the ask was to convert the input to id's, and empty spaces , where the odd indexes were id's and evens were empty spaces (.) and repeat x times correlating to the number in the input e.g;

1234 =>

1 => 1x id --> 0
2 => 2x empty --> ..
3 => 3x id --> 111
4 => 4x empy --> ....

Overall line => 0..111....

We then were asked to move the right most element to the left most empty space.

I.e move 1 -> the first (.), we do this using two loops, one going from rear -> front, and the other front -> rear.

When we find an Id, we move from the front to find the first empty space, and switch these points, and continue until all numbers from the right are moved to left empty spaces.

As long as the right index, is always bigger than the left index, or they haven't met in the middle keep going.

Part 2

Now instead of just finding the left most empty space, we have to try and find a left most empty space, that can fit the whole of the file (id) e.g if we have a fileId of 9999 we'd need 4 empty spaces together, if it won't we move it the next empty space that will. If no empty spaces we move to the next fileId.

[Spoilers] -> Solutions can be found at GitHub

As always you can reach out and follow on Twitter

Top comments (0)