2023 Day 11 Complete!
Added a todo file to track changes to my helpers that need to be propagated through previous days/years
This commit is contained in:
72
2023/day11/main.go
Normal file
72
2023/day11/main.go
Normal file
@@ -0,0 +1,72 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
h "git.bullercodeworks.com/brian/adventofcode/helpers"
|
||||
)
|
||||
|
||||
func main() {
|
||||
inp := h.StdinToStringSlice()
|
||||
part1(inp)
|
||||
fmt.Println()
|
||||
part2(inp)
|
||||
}
|
||||
|
||||
func part1(input []string) {
|
||||
m := h.StringSliceToCoordByteMap(input)
|
||||
for y := m.Height() - 1; y >= 0; y-- {
|
||||
if !m.RowContains(y, '#') {
|
||||
m.InsertRowAfter(y, '.')
|
||||
}
|
||||
}
|
||||
for x := m.Width() - 1; x >= 0; x-- {
|
||||
if !m.ColContains(x, '#') {
|
||||
m.InsertColAfter(x, '.')
|
||||
}
|
||||
}
|
||||
galaxies := m.FindAll('#')
|
||||
var result int
|
||||
for i := 0; i < len(galaxies); i++ {
|
||||
for j := i + 1; j < len(galaxies); j++ {
|
||||
result += galaxies[i].Distance(galaxies[j])
|
||||
}
|
||||
}
|
||||
fmt.Println("# Part 1")
|
||||
fmt.Println(result)
|
||||
}
|
||||
|
||||
func part2(input []string) {
|
||||
m := h.StringSliceToCoordByteMap(input)
|
||||
expansion := 1000000
|
||||
|
||||
galaxies := m.FindAll('#')
|
||||
for y := m.Height() - 1; y >= 0; y-- {
|
||||
if !m.RowContains(y, '#') {
|
||||
// For every '#' coordinate on a row _after_ y, add 1000000 to it's y coord
|
||||
for i := 0; i < len(galaxies); i++ {
|
||||
if galaxies[i].Y > y {
|
||||
galaxies[i].Y += (expansion - 1)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
for x := m.Width() - 1; x >= 0; x-- {
|
||||
if !m.ColContains(x, '#') {
|
||||
// For every '#' coordinate on a col _after_ x, add 1000000 to it's x coord
|
||||
for i := 0; i < len(galaxies); i++ {
|
||||
if galaxies[i].X > x {
|
||||
galaxies[i].X += (expansion - 1)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
var result int
|
||||
for i := 0; i < len(galaxies); i++ {
|
||||
for j := i + 1; j < len(galaxies); j++ {
|
||||
result += galaxies[i].Distance(galaxies[j])
|
||||
}
|
||||
}
|
||||
fmt.Println("# Part 2")
|
||||
fmt.Println(result)
|
||||
}
|
||||
Reference in New Issue
Block a user