2020 Day 3 Done!
This commit is contained in:
parent
0642c298f3
commit
37a935d038
323
2020/day03/input
Normal file
323
2020/day03/input
Normal file
@ -0,0 +1,323 @@
|
||||
.#..#.....#....##..............
|
||||
...#.#...#...#.#..........#....
|
||||
#...###...#.#.....#.##.#.#...#.
|
||||
#.....#.#...##....#...#...#....
|
||||
##.......##.#.....#........##.#
|
||||
#..#....#......#..#......#...#.
|
||||
#..#......#.......#............
|
||||
##...#.#..#...#........#....##.
|
||||
#.#.#...#...#..#........#....#.
|
||||
.......#...........##......#...
|
||||
##.##.##......#..#............#
|
||||
..#.###..#..............#......
|
||||
.##..#.....#......#.#..........
|
||||
........#.........#....#....###
|
||||
#..........#........#.#.#......
|
||||
...##.....#..####.###..#.##....
|
||||
....#...###............#..#....
|
||||
...#.#...#.#...#..#.#........##
|
||||
.....#...#.............#..#....
|
||||
....#.#.#.##.....##.##....#....
|
||||
..#....#............#.##.##..#.
|
||||
.#..#..#................#...###
|
||||
#..###.#..##..#............#...
|
||||
.......#.#....#.##.#.##........
|
||||
##...###.#....#...........###.#
|
||||
...#.#....#..####.........#....
|
||||
....##........#.#.#.###........
|
||||
#...#..#.....#....##..#.##...#.
|
||||
##....................##..#....
|
||||
.#....##...........##...##...#.
|
||||
.#.#..#.........#.........#.#.#
|
||||
#.#..#.....#.#..#..#..#.#......
|
||||
...#.............#......#....##
|
||||
....#.#.......#....#...#.##...#
|
||||
#.#.#..###..........#...#......
|
||||
......#.....#..#..#.......##..#
|
||||
.#......#......#.....#...#.....
|
||||
......#..#......#.#............
|
||||
..#............#..#....#.#.....
|
||||
.....#..##.......#...##.###.#.#
|
||||
.....#........##....#.#...##..#
|
||||
..........##.#..#.#...#..#....#
|
||||
#.#.#.#.##...................#.
|
||||
.....#....##.....#..#...#..#...
|
||||
...#....#.............#....#.#.
|
||||
.........#.##..##..............
|
||||
#...#.#....#..#...#.......#....
|
||||
.#...#......#.##.#...#.#..###..
|
||||
..#.#.#......#..#...##..##.##..
|
||||
.........#.....#......##....##.
|
||||
...###.......#..#........#.....
|
||||
...#....#...#.#.#......##....#.
|
||||
.#.....#......#...##.##..#.....
|
||||
..#.##...#....####...##........
|
||||
..#.#.###....#..##.......##....
|
||||
.....#....##...#......#.......#
|
||||
.#....#......#..............#..
|
||||
.......#.#......#..#....#.#.#..
|
||||
.......#.#.........###....#....
|
||||
.#...#.......#.#..#..####....#.
|
||||
..#...#.#......#..#.##.###..#..
|
||||
..##.........#............#.#.#
|
||||
#.........##.##.........#.###..
|
||||
...#....#.......#..#..##.......
|
||||
.#....##........##.......#..#..
|
||||
...#.....#.#.##.#.#.....##.....
|
||||
.#.#........#.......#.#..#..#..
|
||||
.....####..##.##.#.#....#......
|
||||
..#.##.#.#.#....###..#....#.#..
|
||||
..##..#.#......##.#..#.........
|
||||
....#..#.#.##.......#...##.....
|
||||
....###.....#..###...#....###.#
|
||||
..#....#.......#......#...##..#
|
||||
..#..##......#....#.###..#..##.
|
||||
..#..#...............#.#.#.....
|
||||
...##...#.#..#.#...#......#....
|
||||
#....#...#.#.#.#.#....#....#...
|
||||
....##...#....#.....##..#.....#
|
||||
......##.....#...##..#.......#.
|
||||
......###......#....#.##..#....
|
||||
.....#........#........#...#..#
|
||||
.#..##.....##....#.#......#.#..
|
||||
#..#.#.....#........#......#.#.
|
||||
.#..#.##.....#####.#....#.#....
|
||||
....##........#..........#.#...
|
||||
.......#.....#.......#...#.#...
|
||||
.#....#...##.###....#.#......#.
|
||||
#...#...........##.#...........
|
||||
#...##.......#..#........#.#..#
|
||||
.....#..##..###....#.#.#....#..
|
||||
..#..#.....#............#.#....
|
||||
............#......#.....#.....
|
||||
.#..#.....##.........#....###.#
|
||||
#.........#....#....#.#..#...#.
|
||||
##.#...##....#..#...#.#...#....
|
||||
....###..##...................#
|
||||
....##...#......#...#.#...#...#
|
||||
#....#....###..........#...#..#
|
||||
.....##.#....###.###....#..###.
|
||||
#.....#...........#...........#
|
||||
##..###.##........#..#.#..#.#..
|
||||
.##...#..#.......#.#....#.....#
|
||||
......##..#..#.......#.#...##..
|
||||
......#..#..#.#...###..#.#....#
|
||||
#.##.#..#......#...##........##
|
||||
.....#..........##.....#...#...
|
||||
........#....##......#......#.#
|
||||
..#..#.#...#.#.#.......#......#
|
||||
.#....#........#............#..
|
||||
......##.....#...#.............
|
||||
#......##..#.......##....##.#..
|
||||
.....#..#..#...#.......#..#....
|
||||
...#..##.#..#.#....##.....#..##
|
||||
......#...#.#...#.#......###.#.
|
||||
.#.#...#.....#..###.....#......
|
||||
#..####.#....#.......##...#....
|
||||
.##.......#.....#.........#....
|
||||
#......##.#...............#....
|
||||
.######.#...##...#...#...#..##.
|
||||
....#...####....##.#..#...##...
|
||||
.#...................#.#..#..#.
|
||||
.#.#....##...#...#.#..#.#.#.#..
|
||||
......#......#........##.#...#.
|
||||
##..#...#..#.............##.#..
|
||||
#.............#..........#.#...
|
||||
...##.....#.............#......
|
||||
......###.....#................
|
||||
#.#.#....#..##.#.....#.........
|
||||
.#.#........#.........#.#.##.#.
|
||||
......#...##...#.#.....#....#..
|
||||
#...#.........##.##.#..........
|
||||
#..............#..#.......##...
|
||||
#...#......#.#......#...#....#.
|
||||
...#...#........#.#......#.###.
|
||||
##.....#...#.#..#..#..#.......#
|
||||
..#.##..##.........#...##.##...
|
||||
#....#....#.....#..........#...
|
||||
#.####..#..###.....#..#..#.....
|
||||
..#.....#.##.##..####....#.#.#.
|
||||
...#.#....#...#.......#..#.....
|
||||
......###...#.#..#..#..........
|
||||
.........#..#.....#.#.##......#
|
||||
.......#.#....##.....##.#..#.#.
|
||||
.#..#.#..#......##.###...##..#.
|
||||
....###...........#.....#....#.
|
||||
.#.##.....#..#.....#......##...
|
||||
#..##....#..........#.##.##..#.
|
||||
.###.#.#..#.#.....#..##....#.#.
|
||||
..##.#....#.....##..#..........
|
||||
##........#...#..#........###.#
|
||||
#...#...........##.......#.#...
|
||||
...###.....##.#....#...#...#...
|
||||
......#....#.#.......###....#..
|
||||
...#...#.......##.......###.#..
|
||||
..............#.#..........##..
|
||||
#.#....###..#..#.........#.....
|
||||
.###.#.......#.....#....#.#....
|
||||
.....###...#.#..#.#.......#....
|
||||
.........#.##.#......#.#..#....
|
||||
.......#....#....#.#....#..##.#
|
||||
...............#...##.#..#.#..#
|
||||
.....##........#..##...........
|
||||
.##.#..#....#..#.#...#.........
|
||||
.#.#..##.#..#......#....#.#...#
|
||||
##....#.......##...........#...
|
||||
..#...#.............#.#....#..#
|
||||
..#......#..#.....#...##.....#.
|
||||
....##...#.#...##...#..##......
|
||||
.....#..#..........#...........
|
||||
..##....#..#.#....#..#........#
|
||||
.###....#.....#.#....#..##.....
|
||||
#.......##.......#..#..#....#.#
|
||||
.##..#...........#..##..##..#..
|
||||
.#.................#...#....#..
|
||||
.######.......#............##..
|
||||
.#.........#......##.#.#.#.#.#.
|
||||
.#.......#...#...#....###....#.
|
||||
....#...##.#.#...#.....#.#..#..
|
||||
.#..#..#...#.....###....#......
|
||||
...#.##.###........#.....##....
|
||||
..#....#.#.#..........#..#..#..
|
||||
......#.....#...#..#..##..#.#..
|
||||
#.#.......##.......#....#.....#
|
||||
..#...#..#.#....#.##.##........
|
||||
..#....#..##..#..##......#.....
|
||||
#....#..##.....#....###........
|
||||
##...#......#..###.#.....#.....
|
||||
#..###....#...#...#...#......##
|
||||
.....###....#......#..#..#...#.
|
||||
.##......#.......##...#........
|
||||
....#.#.....##.....#.....#.....
|
||||
...##.#.....#..##...#...##.#...
|
||||
..#...#.#....#....#...##.......
|
||||
......#....#..#....#.#.........
|
||||
..........#.#.#...##....#......
|
||||
...#....................#..#...
|
||||
...#....###....#..#.....#.....#
|
||||
..#....#....#..#.#..##.#...#...
|
||||
..#.##....##.....#.#........#..
|
||||
#.....###..#.#.#...#..#....#...
|
||||
........#..#.#..#........##....
|
||||
.##....#................##.#.##
|
||||
..##...#.#.#.....##..#....#....
|
||||
....#..#....#..#........#..##..
|
||||
...#...##....#....#..##......#.
|
||||
##........#...#.....#.....#...#
|
||||
.#......#....##...#.........##.
|
||||
##........#...#.....#..#...#.#.
|
||||
...##..#..#.....#..###.#..#....
|
||||
....#..#..............#.......#
|
||||
.......#.##...#......#.###.....
|
||||
#........##..##....#.#.#.......
|
||||
#.#..##.#.......#..##.....###..
|
||||
.....##...#..#.....#...........
|
||||
...#..#..#......#...#.#........
|
||||
.#....#....#.#.....#.....#....#
|
||||
...#..#...#..#.##.#......#.#.#.
|
||||
..##....#..#..#.....#....#....#
|
||||
...#....#.##.#..#.###......#...
|
||||
.......#..#.....#.......#..#...
|
||||
..###.#####..#..##.#.........#.
|
||||
...#.......##...#.#..#.#......#
|
||||
....#...#.###..#..........#....
|
||||
...........#...#..##........#..
|
||||
.......#...#....#....#.#..#....
|
||||
.........#..........#...#....##
|
||||
.##.........##..#.......##.#...
|
||||
........#......###...##...#.#.#
|
||||
#.#...##.##...........#...#.#..
|
||||
.....###...#..##......#..#.....
|
||||
#.#.....#.#....##..........#..#
|
||||
#..#.......#.#.........####....
|
||||
#.#...#.....#........#.....#..#
|
||||
.....#..#.#.###.....#.#.###....
|
||||
.###..#......##..#..#..........
|
||||
#....#.#......#...#.##......#..
|
||||
..#.........##.#.....#.........
|
||||
...#....#.....##.#..#..##.#..#.
|
||||
##.....#.#..#.#....#......#....
|
||||
....###.#.....#.......#..#.#...
|
||||
#.....##.....##...........#....
|
||||
..........#..#......#.##...#...
|
||||
#...#.###....##....#.###..###..
|
||||
##........#.#...#..#.........#.
|
||||
##........##.......#.....###...
|
||||
.##....###........#..##...#...#
|
||||
......#..##....##.....#..#.#...
|
||||
.....#..##..#.......#.......#..
|
||||
......#....#.......##.#........
|
||||
.#.####.#..#......#..#.........
|
||||
.##..#....#...##.#....#....#...
|
||||
..#..#..#####.........#...#....
|
||||
....#.....#.#.#.#...#.#......#.
|
||||
....#...#.#..#.##...#...#......
|
||||
..#...#...#...#...#..#.#.##..#.
|
||||
..#......#.#.#.##.##.##..#.....
|
||||
#..###......#.##...#....#.##.#.
|
||||
.#.#.......##..##....##...##.#.
|
||||
.##......##....##.#.......#...#
|
||||
..#...#...................#....
|
||||
.#...#.......######.....#.#..##
|
||||
......#.##.....#.#.............
|
||||
...........##.#........#..#....
|
||||
#.............#.#.....#....##..
|
||||
#...........#...#..###.....#...
|
||||
....#.......#.#..#..#.#........
|
||||
......#...##.......#..##....#..
|
||||
......#.##.##..#........#.#...#
|
||||
.#..#...##...................#.
|
||||
.#.............#...#.#.#.#...#.
|
||||
.........#.....#........#.#....
|
||||
#..#...#.............##.#.....#
|
||||
...#.#....#...##............#..
|
||||
..#...#.##.###.#.....#......##.
|
||||
...#.#..###...#.#............#.
|
||||
...#....#........#.#...........
|
||||
.#......#.#.#.........#.#....#.
|
||||
....#..#......#.##.....#.#.....
|
||||
..#..###....#....#.........###.
|
||||
#..#.#....##.#....#.##..#......
|
||||
#..#.....#.#.....##..#.##......
|
||||
......#...#.#.............#..#.
|
||||
#.#....#.#..#...#......#.#.....
|
||||
..#.........#.#....#...#.......
|
||||
.#..#.#...#....#...#......#...#
|
||||
.......#........#.#..#..#...#..
|
||||
..##.#......#..##.##.#..#..#...
|
||||
.##...#....##.....#.....#...##.
|
||||
#.....##.#....#.#......##..#...
|
||||
.......#.#..#...#.......#.#...#
|
||||
..#...#.......#...#..##........
|
||||
#....##..#...#..#.#......#..#.#
|
||||
##.#....#....#....#...#..#.##..
|
||||
###........#.#..#..#......#....
|
||||
.#......#.....#....#.#..#...#..
|
||||
.#.....#.....#...##.......#..##
|
||||
#..##.#..#..........#..........
|
||||
...#.##.........#.#.##.#.......
|
||||
.#..#...............#...#.#.#..
|
||||
.....#.#.....#...####..#.....#.
|
||||
.#....#.##..##...#...##.#...#.#
|
||||
....#......##...#.#.#.....#.##.
|
||||
#...#..#.#...#.#.....##...#....
|
||||
..#..#....##..###......#..#....
|
||||
.........#......##.....##....#.
|
||||
.......#....#...#........###...
|
||||
.....#..#..#...#...#......#....
|
||||
..#..#...#.....#.....###..#.###
|
||||
............#.#..#..#....#.....
|
||||
...#..#...###.......#.......#..
|
||||
#.........#........#.....##....
|
||||
.#.#........#.....#........###.
|
||||
....#.##.#...#.#.#.....#....#..
|
||||
.##...#..#.......#.#...........
|
||||
##...#.##...#...........#.....#
|
||||
##....#.#.....##..#.......#....
|
||||
##....#...#....#..#.......####.
|
||||
......#...#..#.....#.#....#...#
|
||||
.......#.....#..###............
|
||||
#.#.#..#.....#.............#..#
|
||||
.#..#.....##.....#...#.......##
|
||||
..#.##........##...........#.#.
|
||||
....##.#..###.#.........#...##.
|
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
|
||||
}
|
11
2020/day03/testinput
Normal file
11
2020/day03/testinput
Normal file
@ -0,0 +1,11 @@
|
||||
..##.......
|
||||
#...#...#..
|
||||
.#....#..#.
|
||||
..#.#...#.#
|
||||
.#...##..#.
|
||||
..#.##.....
|
||||
.#.#.#....#
|
||||
.#........#
|
||||
#.##...#...
|
||||
#...##....#
|
||||
.#..#...#.#
|
46
helpers/coordinateByteMap.go
Normal file
46
helpers/coordinateByteMap.go
Normal file
@ -0,0 +1,46 @@
|
||||
package aoc
|
||||
|
||||
type CoordByteMap struct {
|
||||
Field map[Coordinate]byte
|
||||
Height int
|
||||
Width int
|
||||
}
|
||||
|
||||
func StringSliceToCoordByteMap(input []string) CoordByteMap {
|
||||
ret := CoordByteMap{
|
||||
Field: make(map[Coordinate]byte),
|
||||
Height: len(input),
|
||||
Width: 0,
|
||||
}
|
||||
for y := range input {
|
||||
for x := range input[y] {
|
||||
ret.Field[Coordinate{X: x, Y: y}] = input[y][x]
|
||||
if x > ret.Width {
|
||||
ret.Width = x
|
||||
}
|
||||
}
|
||||
}
|
||||
return ret
|
||||
}
|
||||
|
||||
func (m *CoordByteMap) Get(pos Coordinate) byte {
|
||||
if pos.X <= m.Width && pos.Y <= m.Height {
|
||||
return m.Field[pos]
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (m *CoordByteMap) Put(pos Coordinate, val byte) {
|
||||
m.Field[pos] = val
|
||||
}
|
||||
|
||||
func (m CoordByteMap) String() string {
|
||||
var ret string
|
||||
for y := 0; y <= m.Height; y++ {
|
||||
for x := 0; x <= m.Width; x++ {
|
||||
ret = ret + string(m.Field[Coordinate{X: x, Y: y}])
|
||||
}
|
||||
ret = ret + "\n"
|
||||
}
|
||||
return ret
|
||||
}
|
@ -101,6 +101,10 @@ func StdinToStringSlice() []string {
|
||||
return input
|
||||
}
|
||||
|
||||
func StdinToCoordMap() CoordByteMap {
|
||||
return StringSliceToCoordByteMap(StdinToStringSlice())
|
||||
}
|
||||
|
||||
func Atoi(i string) int {
|
||||
var ret int
|
||||
var err error
|
||||
|
Loading…
Reference in New Issue
Block a user