2024-09-disk-defrag/blocks.go
2024-12-09 14:34:01 -06:00

31 lines
446 B
Go

package defrag
import (
"strconv"
)
func Blocks(diskMap []byte) ([]int, error) {
current := 0
onFile := false
out := []int{}
for _, by := range diskMap {
count, err := strconv.Atoi(string(by))
if err != nil {
return nil, err
}
onFile = !onFile
if count == 0 {
continue
}
val := -1
if onFile {
val = current
current++
}
for idx := 0; idx < count; idx++ {
out = append(out, val)
}
}
return out, nil
}