Files
adventofcode2025/9/main.go
Javier-Orestis MANTZIOS f842c01116 Day 9 part 1 done
2025-01-07 12:28:32 +02:00

57 lines
1.1 KiB
Go

package main
import (
"bufio"
"fmt"
"os"
"strconv"
"strings"
)
func main() {
// file, _ := os.Open("test")
file, _ := os.Open("input")
defer file.Close()
scanner := bufio.NewScanner(file)
diskMap := []string{}
for scanner.Scan() {
line := scanner.Text()
diskMap = append(diskMap, strings.Split(line, "")...)
}
fileID := 0
blockSize := 0
freeSpace := 0
blocks := []string{}
for i := range diskMap {
if i % 2 == 0 {
blockSize, _ = strconv.Atoi(diskMap[i])
for j:=0;j<blockSize;j++ {
blocks = append(blocks, strconv.Itoa(fileID))
}
fileID++
} else {
freeSpace, _ = strconv.Atoi(diskMap[i])
for j:=0;j<freeSpace;j++ {
blocks = append(blocks, ".")
}
}
}
for i := range blocks {
if blocks[i] == "." {
for j:=len(blocks)-1;j>i;j-- {
if blocks[j] != "." {
blocks[i] = blocks[j]
blocks[j] = "."
break
}
}
}
}
checksum := 0
for i := range blocks {
blockID, _ := strconv.Atoi(blocks[i])
checksum = checksum + i * blockID
}
fmt.Println(checksum)
}