◂ 9 décembre 2024 ▸
Disk Fragmenter : Déplacer des valeurs par bloc dans des endroits disponibles.
2378984580121520505930414446619015763552254 …
Sûrement plus simple et propre en utilisant des listes chaînées plutôt que des tableaux.
J'ai créé une classe File
juste pour pouvoir faire fichier.id
au lieu du fichier[id]
d'un dictionnaire et que c'est plus propre (mais moins rapide) que des fichier[1]
.
- code.py
- diff_versionBug_versionCorrigee.diffy
# Ce code buggue en partie 1 avec d'autres inputs <
# Si on arrive dans un état '000122.....3' (. = libre) <
# alors on essaie de swaper le 3 avec un élément de fin <
# qui n'existe plus ! <
<
... ...
# Part 1: moving block by block # Part 1: moving block by block, version sans le bug
def defrag_part1(system): def defrag_part1(system):
free_pos = next((k for k in range(len(system)) if system[ free_pos = next((k for k in range(len(system)) if system[
> last_block = system.pop()
while free_pos != NOT_FOUND: while free_pos != NOT_FOUND:
> system[free_pos] = last_block
last_block = system.pop() last_block = system.pop()
while last_block is None: while last_block is None:
last_block = system.pop() last_block = system.pop()
system[free_pos] = last_block <
free_pos = next((k for k in range(free_pos + 1, len(s free_pos = next((k for k in range(free_pos + 1, len(s
> system.append(last_block)
return system return system
... ...