Skip to content

Commit

Permalink
refactor: 2024 day 1
Browse files Browse the repository at this point in the history
  • Loading branch information
arunsathiya committed Dec 22, 2024
1 parent 9949664 commit 570bc7d
Showing 1 changed file with 35 additions and 58 deletions.
93 changes: 35 additions & 58 deletions src/2024/day01/go/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,75 +11,58 @@ import (
"strings"
)

func calculateDistances(input *os.File) (int, error) {
type NumberPairs struct {
a []int
b []int
}

func readAndSortNumbers(input *os.File) NumberPairs {
scanner := bufio.NewScanner(input)
sum := 0
a := make([]int, 0)
b := make([]int, 0)
pairs := NumberPairs{
a: make([]int, 0),
b: make([]int, 0),
}

for scanner.Scan() {
line := scanner.Text()
first := strings.Split(line, " ")[0]
firstN, err := strconv.Atoi(first)
numbers := strings.Split(scanner.Text(), " ")
firstN, err := strconv.Atoi(numbers[0])
if err != nil {
log.Fatal(err)
}
second := strings.Split(line, " ")[1]
secondN, err := strconv.Atoi(second)
secondN, err := strconv.Atoi(numbers[1])
if err != nil {
log.Fatal(err)
}
a = append(a, firstN)
b = append(b, secondN)
pairs.a = append(pairs.a, firstN)
pairs.b = append(pairs.b, secondN)
}
sort.Slice(a, func(i, j int) bool {
return a[i] < a[j]
})
sort.Slice(b, func(i, j int) bool {
return b[i] < b[j]
})
for i := 0; i < len(a); i++ {
diff := math.Abs(float64(a[i] - b[i]))

sort.Ints(pairs.a)
sort.Ints(pairs.b)
return pairs
}

func calculateDistances(pairs NumberPairs) int {
sum := 0
for i := 0; i < len(pairs.a); i++ {
diff := math.Abs(float64(pairs.a[i] - pairs.b[i]))
sum += int(diff)
}
return sum, nil
return sum
}

func similarityScore(input *os.File) (int, error) {
scanner := bufio.NewScanner(input)
func similarityScore(pairs NumberPairs) int {
sum := 0
a := make([]int, 0)
b := make([]int, 0)
for scanner.Scan() {
line := scanner.Text()
first := strings.Split(line, " ")[0]
firstN, err := strconv.Atoi(first)
if err != nil {
log.Fatal(err)
}
second := strings.Split(line, " ")[1]
secondN, err := strconv.Atoi(second)
if err != nil {
log.Fatal(err)
}
a = append(a, firstN)
b = append(b, secondN)
}
sort.Slice(a, func(i, j int) bool {
return a[i] < a[j]
})
sort.Slice(b, func(i, j int) bool {
return b[i] < b[j]
})
for _, left := range a {
for _, left := range pairs.a {
count := 0
for _, right := range b {
for _, right := range pairs.b {
if left == right {
count++
}
}
sum += left * count
}
return sum, nil
return sum
}

func main() {
Expand All @@ -88,15 +71,9 @@ func main() {
log.Fatal(err)
}
defer input.Close()
distances, err := calculateDistances(input)
if err != nil {
log.Fatal(err)
}
input.Seek(0, 0)
similarityScore, err := similarityScore(input)
if err != nil {
log.Fatal(err)
}
pairs := readAndSortNumbers(input)
distances := calculateDistances(pairs)
similarity := similarityScore(pairs)
fmt.Println(distances)
fmt.Println(similarityScore)
fmt.Println(similarity)
}

0 comments on commit 570bc7d

Please # to comment.