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 }