71 lines
953 B
Go
71 lines
953 B
Go
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 {
|
|
|
|
if line == "" {
|
|
continue
|
|
}
|
|
|
|
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")
|
|
return chunks
|
|
}
|