68 lines
979 B
Go
68 lines
979 B
Go
package main
|
|
|
|
import (
|
|
"bufio"
|
|
"fmt"
|
|
"os"
|
|
)
|
|
|
|
func main() {
|
|
file, _ := os.Open("input.txt")
|
|
defer file.Close()
|
|
|
|
treeMap := [][]int{}
|
|
|
|
scanner := bufio.NewScanner(file)
|
|
for scanner.Scan() {
|
|
treeRow := []int{}
|
|
for _, char := range scanner.Text() {
|
|
if char == '#' {
|
|
treeRow = append(treeRow, 1)
|
|
} else if char == '.' {
|
|
treeRow = append(treeRow, 0)
|
|
}
|
|
}
|
|
treeMap = append(treeMap, treeRow)
|
|
}
|
|
|
|
rowLength := len(treeMap[0])
|
|
|
|
row := 0
|
|
pos := 0
|
|
trees := 0
|
|
|
|
// Part 1
|
|
|
|
for row < len(treeMap) {
|
|
trees += treeMap[row][pos]
|
|
row++
|
|
pos += 3
|
|
pos %= rowLength
|
|
}
|
|
|
|
fmt.Println("Part 1:", trees)
|
|
|
|
// Part 2
|
|
|
|
trees = 1
|
|
|
|
type slope struct {
|
|
right, down int
|
|
}
|
|
|
|
for _, s := range []slope{{1, 1}, {3, 1}, {5, 1}, {7, 1}, {1, 2}} {
|
|
slopeTrees := 0
|
|
row = 0
|
|
pos = 0
|
|
for row < len(treeMap) {
|
|
slopeTrees += treeMap[row][pos]
|
|
row += s.down
|
|
pos += s.right
|
|
pos %= rowLength
|
|
}
|
|
trees *= slopeTrees
|
|
}
|
|
|
|
fmt.Println("Part 2:", trees)
|
|
}
|