diff --git a/blocks.go b/blocks.go index 8b3ba09..2c90f7a 100644 --- a/blocks.go +++ b/blocks.go @@ -1,5 +1,30 @@ package defrag +import ( + "bytes" + "strconv" + "strings" +) + func Blocks(diskMap []byte) ([]byte, error) { - return nil, nil + current := 0 + onFile := false + buff := bytes.Buffer{} + for _, by := range diskMap { + count, err := strconv.Atoi(string(by)) + if err != nil { + return nil, err + } + onFile = !onFile + if count == 0 { + continue + } + append := "." + if onFile { + append = strconv.Itoa(current) + current++ + } + buff.WriteString(strings.Repeat(append, count)) + } + return buff.Bytes(), nil } diff --git a/cmd/defrag/main.go b/cmd/defrag/main.go index e620e91..99bdecf 100644 --- a/cmd/defrag/main.go +++ b/cmd/defrag/main.go @@ -1,10 +1,10 @@ package main import ( + "bytes" "fmt" "io" "os" - "bytes" "codeberg.org/danjones000/advent-of-code/2024-09/defrag" )