Maison >développement back-end >Tutoriel Python >Avènement du code - DayDisk Fragmenter (Python)
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 .
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.
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!