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

Grant Riordan @grantdotdev

About: Lvl 12 Dev - Lead Software Engineer & Tech Author Twitter link below 👇

Location:
Yorkshire, England
Joined:
Jul 17, 2020

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

Publish Date: Dec 10 '24
3 0

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

Comments 0 total

    Add comment