diff --git a/2024/go/day09/day09.go b/2024/go/day09/day09.go new file mode 100644 index 0000000..64ddd3d --- /dev/null +++ b/2024/go/day09/day09.go @@ -0,0 +1,117 @@ +package day09 + +import ( + "adventofcode2024/utils" + "fmt" +) + +func Part1(input string) int { + disk := []int{} + file_id := 0 + for i := 0; i <= len(input); i++ { + for x := 0; x < utils.MustAtoi(string(input[i])); x++ { + disk = append(disk, file_id) + } + i++ + if i < len(input) { + for x := 0; x < utils.MustAtoi(string(input[i])); x++ { + disk = append(disk, -1) + } + } + file_id++ + } + + printDisk(disk) + + for i:=len(disk)-1;i>0;i--{ + if disk[i] != -1 { + id := disk[i] + disk[i] = -1 + for j:=0;j<=len(disk);j++ { + if disk[j] == -1 { + disk[j] = id + break + } + } + } + } + printDisk(disk) + + checksum := 0 + for i:=0;i0;i--{ + size := 0 + if disk[i] != -1 { + id := disk[i] + for { + if i-size > 0 && disk[i-size] == id { + size++ + } else { + break + } + } + free := 0 + j := 0 + found := false + for ;j