package main import ( "fmt" "os" "sort" "strconv" "strings" ) func main() { lines := parse() var left = []int{} var right = []int{} for _, line := range lines { nums := strings.Fields(line) l, _ := strconv.Atoi(nums[0]) r, _ := strconv.Atoi(nums[1]) left = append(left, l) right = append(right, r) } 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 } var similarity = 0 for i := 0; i < len(left); i++ { var count = 0 for j := 0; j < len(right); j++ { if left[i] == right[j] { count += 1 } } similarity += count * left[i] } fmt.Println(sum) fmt.Println(similarity) } func parse() []string { filePath := os.Args[1] data, _ := os.ReadFile(filePath) chunks := strings.Split(string(data), "\n") var nonEmpthyChunks = []string{} for _, chunk := range chunks { if chunk != "" { nonEmpthyChunks = append(nonEmpthyChunks, chunk) } } return nonEmpthyChunks }