re-organise repo

This commit is contained in:
2023-11-16 10:48:53 +00:00
parent f62c52d8a9
commit f133e157a1
87 changed files with 11792 additions and 0 deletions

89
2022/go/day08/day08.go Normal file
View File

@@ -0,0 +1,89 @@
package day08
import (
_ "fmt"
"adventofcode2022/utils"
"adventofcode2022/utils/inputs"
"adventofcode2022/utils/grid2d"
)
func Part1(input string) int {
grid := inputs.ToGrid2D(input, "\n", "", -1, utils.MustAtoi)
visible := grid2d.NewGrid(grid.SizeX(), grid.SizeY(), false)
for j := 0; j < grid.SizeY(); j++ {
for i := 0; i < grid.SizeX(); i++ {
directions := [][]int{{0, 1}, {0, -1}, {1, 0}, {-1, 0}}
for _, dir := range directions {
v := true
x := i
y := j
for {
x += dir[0]
y += dir[1]
if x < 0 || x >= grid.SizeX() || y < 0 || y >= grid.SizeY() {
break
}
if grid.Get(i, j) <= grid.Get(x, y) {
v = false
break
}
}
if v {
visible.Set(i, j, true)
break
}
}
}
}
sum := 0
for j := 0; j < visible.SizeY(); j++ {
for i := 0; i < visible.SizeX(); i++ {
if visible.Get(i, j) {
sum++
}
}
}
return sum
}
func Part2(input string) int {
grid := inputs.ToGrid2D(input, "\n", "", -1, utils.MustAtoi)
scenicScore := grid2d.NewGrid(grid.SizeX(), grid.SizeY(), 1)
for j := 0; j < grid.SizeY(); j++ {
for i := 0; i < grid.SizeX(); i++ {
directions := [][]int{{0, 1}, {0, -1}, {1, 0}, {-1, 0}}
for _, dir := range directions {
score := 0
x := i
y := j
for {
x += dir[0]
y += dir[1]
if x < 0 || x >= grid.SizeX() || y < 0 || y >= grid.SizeY() {
break
}
if grid.Get(i, j) <= grid.Get(x, y) {
score++
break
}
score++
}
scenicScore.Set(i, j, scenicScore.Get(i,j) * score)
}
}
}
max := 0
for j := 0; j < scenicScore.SizeY(); j++ {
for i := 0; i < scenicScore.SizeX(); i++ {
if scenicScore.Get(i, j) > max {
max = scenicScore.Get(i, j)
}
}
}
return max
}