Maison >développement back-end >Tutoriel Python >Avènement du code &#- DayDisk Fragmenter (Python)

Avènement du code &#- DayDisk Fragmenter (Python)

Barbara Streisand
Barbara Streisandoriginal
2024-12-17 10:45:24163parcourir

Advent of Code

Avènement du Code Jour 9 : Fragmenteur de disque

La solution d'aujourd'hui n'a été réalisée qu'en Python, car j'ai du mal à trouver le temps d'écrire à la fois en Python et en C# ainsi qu'une rédaction, alors j'ai choisi de faire l'un des autres à l'avenir .

Partie 1

C'était assez simple, la demande était de convertir l'entrée en identifiants et en espaces vides, où les index impairs étaient des identifiants et les pairs étaient des espaces vides (.) et de répéter x fois en corrélation avec le nombre dans l'entrée, par exemple ;

1234 =>

1 => 1x identifiant ---> 0
2 => 2x vide ---> ..
3 => 3x identifiant ---> 111
4 => 4x vide ---> ....

Ligne globale => 0..111....

On nous a ensuite demandé de déplacer l'élément le plus à droite vers l'espace vide le plus à gauche.

C'est-à-dire le mouvement 1 -> le premier (.), nous faisons cela en utilisant deux boucles, une allant de l'arrière -> avant, et l'autre avant -> arrière.

Lorsque nous trouvons un identifiant, nous nous déplaçons de l'avant pour trouver le premier espace vide, changeons ces points et continuons jusqu'à ce que tous les nombres de droite soient déplacés vers les espaces vides de gauche.

Tant que l'index droit est toujours plus grand que l'index gauche, ou qu'ils ne se sont pas rencontrés au milieu, continuez.

Partie 2

Maintenant, au lieu de simplement trouver l'espace le plus vide à gauche, nous devons essayer de trouver un espace le plus à gauche, qui peut contenir l'intégralité du fichier (id), par exemple si nous avons un fileId de 9999, nous aurions besoin de 4 espaces vides ensemble, si ce n'est pas le cas, nous le déplaçons vers l'espace vide suivant. S'il n'y a pas d'espace vide, nous passons au prochain fileId.

[Spoilers] -> Des solutions peuvent être trouvées sur GitHub

Comme toujours, vous pouvez nous contacter et suivre sur Twitter

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn