DEV Community

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

Posted on

2

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

Billboard image

Monitoring as code

With Checkly, you can use Playwright tests and Javascript to monitor end-to-end scenarios in your NextJS, Astro, Remix, or other application.

Get started now!

Top comments (0)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs

👋 Kindness is contagious

Immerse yourself in a wealth of knowledge with this piece, supported by the inclusive DEV Community—every developer, no matter where they are in their journey, is invited to contribute to our collective wisdom.

A simple “thank you” goes a long way—express your gratitude below in the comments!

Gathering insights enriches our journey on DEV and fortifies our community ties. Did you find this article valuable? Taking a moment to thank the author can have a significant impact.

Okay