diff --git a/2024/01/go.mod b/2024/01/go.mod new file mode 100644 index 0000000..3a3a5a6 --- /dev/null +++ b/2024/01/go.mod @@ -0,0 +1,3 @@ +module main + +go 1.23.3 diff --git a/2024/01/main.go b/2024/01/main.go new file mode 100644 index 0000000..aa39119 --- /dev/null +++ b/2024/01/main.go @@ -0,0 +1,68 @@ +package main + +import ( + "fmt" + "os" + "sort" + "strconv" + "strings" +) + +func main() { + + lines := parse() + + // var first = 0 + // var last = 0 + + var left = []int{} + var right = []int{} + + for _, line := range lines { + fmt.Println(line) + + if line == "" { + continue + } + + nums := strings.Fields(line) + + fmt.Println(nums[0], nums[1]) + l, _ := strconv.Atoi(nums[0]) + r, _ := strconv.Atoi(nums[1]) + left = append(left, l) + right = append(right, r) + + // for i := 0; i < len(line); i++ { + // //fmt.Println(int(line[i])) + // x, err := strconv.Atoi(string(line[i])) + // if err == nil { + // last = x + // break + // } + // } + } + + sort.Ints(left) + sort.Ints(right) + + var sum = 0 + + for i := 0; i < len(left); i++ { + var diff = right[i] - left[i] + if diff < 0 { + diff *= -1 + } + sum += diff + } + + fmt.Println(sum) + +} + +func parse() []string { + filePath := os.Args[1] + data, _ := os.ReadFile(filePath) + chunks := strings.Split(string(data), "\n") + return chunks +}