2020 Day 3 Done!
This commit is contained in:
44
2020/day03/main.go
Normal file
44
2020/day03/main.go
Normal file
@@ -0,0 +1,44 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
h "git.bullercodeworks.com/brian/adventofcode/helpers"
|
||||
)
|
||||
|
||||
func main() {
|
||||
inp := h.StdinToStringSlice()
|
||||
total := 1
|
||||
for _, slope := range []h.Coordinate{
|
||||
{X: 1, Y: 1},
|
||||
{X: 3, Y: 1},
|
||||
{X: 5, Y: 1},
|
||||
{X: 7, Y: 1},
|
||||
{X: 1, Y: 2},
|
||||
} {
|
||||
field := h.StringSliceToCoordByteMap(inp)
|
||||
val := countTrees(field, slope.X, slope.Y)
|
||||
total = total * val
|
||||
fmt.Println(slope.X, slope.Y, ":", val, "Trees")
|
||||
}
|
||||
fmt.Println("Total:", total)
|
||||
}
|
||||
|
||||
func countTrees(field h.CoordByteMap, x, y int) int {
|
||||
trees := 0
|
||||
pos := h.Coordinate{X: x, Y: y}
|
||||
for pos.Y < field.Height {
|
||||
if pos.X > field.Width {
|
||||
pos.X = pos.X - field.Width - 1
|
||||
}
|
||||
if field.Get(pos) == '#' {
|
||||
trees++
|
||||
field.Put(pos, 'X')
|
||||
} else {
|
||||
field.Put(pos, 'O')
|
||||
}
|
||||
pos.Y = pos.Y + y
|
||||
pos.X = pos.X + x
|
||||
}
|
||||
return trees
|
||||
}
|
||||
Reference in New Issue
Block a user