From 7fd8294b2b7e922376a2213393159105637d25fe Mon Sep 17 00:00:00 2001 From: Brian Buller Date: Wed, 18 Dec 2019 08:07:19 -0600 Subject: [PATCH] 2019 Day 18 started --- 2019/day18/input | 81 ++++++++++++++++++++++++++++++++++++++++++++++ 2019/day18/main.go | 77 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 158 insertions(+) create mode 100644 2019/day18/input create mode 100644 2019/day18/main.go diff --git a/2019/day18/input b/2019/day18/input new file mode 100644 index 0000000..2b708a3 --- /dev/null +++ b/2019/day18/input @@ -0,0 +1,81 @@ +################################################################################# +#...#p........#..k........#.K..f........#...#.........#...........#.....#.......# +#.#V#.#######.#P#########.#.#########.###.#.#######.###.###.#####.#.###.#.#####Y# +#.#.#.#.C...#...#....u..#...#.A.....#...#.#.........#...#...#...#.#...#...#.....# +#.#.#.#.###.#########.#.#####.#####.#.#.#.#########.#.###.#####.#.###.#####.##### +#.#...#...#.#.......#.#.#.#...#...#.#.#.#...#...#...#.#...#.....#.....#.#...#...# +#.#####.#.#.###.###.#.#.#.#.###.#.#.#.#.###.#.#.#####.#.###.###########.#.###.### +#...#.#.#.#...#.#.#...#.#.#i#...#.#.#.#.#...#.#.....#.#...#.........#.....#.....# +###.#.#.#.###.#.#.#####.#.#.#.#.#.#.###F#.###.#####.#.###.#######.#.#.#####.###.# +#...#..n#.#.#...#.....#...#.#.#.#.#.#a..#.....#.#...#...#.#.....#.#.#.....#...#.# +#O#######.#.#####.#####.###.#.#.#.#.#.###.#####.#.#.###J#.#.###.#.#######.#####.# +#...#.....#.....#.....#.#...#.#.#.#...#.#.......#.#...#.#.#.#.#.#.........#.....# +###.#.#####.#.###.###.#.#.#####.#######.#.#######.#####.#.#.#.#.###.#######.###.# +#.#.#.#...#.#.....#.#...#.#.....#.......#.#t....#.#.....#l#.#.#...#...#....x#.#.# +#.#.#.###.#.#######.#####.###.###.###.#.###.###.#.#.#####.#.#.###.###.#.#####.#.# +#...#...#.#...#.........#...#....q#...#.#...#...#.#...#.#.#...#...#.#...#...#...# +#.#####.#.###.#.###########I#######.###.#.#####.#.###.#.#.###.#.###.#####.#.#.### +#.......#...#.#.#......z....#...#...#...#.#...#.#.......#.#...#.#.........#.#.#.# +#########.#.#.#.#.###########.#.#.###.###.#.#.#.#.#######.#.###.#.#########G#.#.# +#.....#...#.#...#.#...........#.#.#.#...#.#.#.#.#...#.....#.#...#.....#...#.#...# +#W#.###.###.###.#.#####.#.#####.#.#.###.#.#.#.#.###.#.#####.#.#######.#.###.###.# +#.#...#...#.....#...Z.#.#...#.#...#.#...#...#.#...#.#.....#.#.#.......#.#...#...# +#.###.###.#############.###.#.#####.#.#######.###.#.#####.#.###.#.#####.#.###.### +#...#...#.#.....#.....#...#.#.......#.#.#...#.#.#.#.#.....#...#.#.#...#.....#...# +#.#####.#.#.###.###.#.###.#.#######.#.#.#.#.#.#.#.#.#.###.###.###.#.#.#.#######.# +#.#.....#...#...#...#.#...#...#...#...#.#.#.#.#.#.#.#.#.#.#.#...#.#.#...#.......# +###.###.#####.###.###.#####.#.#.#.#.###.#.#.#.#.#.###.#.#.#.###.#.###.###.####### +#...#.....#.#.#...#.#.#...#.#.#.#.#.....#.#...#.#.....#...#...#.#...#...#.#.....# +#.#######.#.#.###.#.#.#.#.###.#.#.#####.#.#####.#######.#####.#.###.#####.#.###.# +#.#.....#.#.#.....#.#.#.#...#...#...#...#...#.....#...........#...#.........#...# +#.#.###.#.#.#######.#.#.###.#.#####.#.###.#.#.#.###.#########.###.#####.#######.# +#r#...#.#...#.......#.#...#.#.#.....#.#.#.#.#.#.........#...#...#.....#...#...#.# +#.###.#.#####.#.#####.#.#.#.###.#####.#.#.#.###########.#.#.#.#######.#####.#.### +#.....#.#...#.#.#.....#.#.#.....#.....#.#.#.......#...#.#.#.#.#.....#.#.....#...# +#.#####.#.#.#.#.#.#######.#######.#####.#.#######.#.#.###.#.###.###.#.#.#######.# +#.#.#...#.#.#.#.#.#.....#.....#.#.#.....#.#.....#...#.....#...#...#.#...#.......# +#.#.#.###.#.#.#.#.###.#.#.###.#.#.###.#.#.#.###.#############.###.#.#####.####### +#.#.#...#.#...#.#.#...#.#...#.#...#...#.#.#.#...#........m..#...#.#.....#.....#.# +#.#.###.#.#####.#.#.###.#####.#.###.###.#.#.#.###.#########.#.###.#####.#####.#.# +#.....#.......#.....#.........#.....#.......#.....#.........#.........#.........# +#######################################.@.####################################### +#.#...M.........#.H...............#.........#h....#...#.....#.#..............b..# +#.#.###########.#####.###########.#.###.###.#.#.#.#.#.###.#.#.#.###############.# +#.#...........#.......#.........#...#...#...#.#.#...#.#...#.#.......#.D.#.....#.# +#.###########.###.#####.#####.#######.###.###.#.#####.#.###.#########.#.#.###.#.# +#.....#.....#...#.#...#.#...#.....#...#.#.....#.#...#.#.#...#.........#...#.#.#.# +#.###.#.###.###.###.#.#.###.#####.#.###.#######.#.#.#.#.#.###.#############.#.#.# +#...#.#.#.#...#.....#.#.........#...#...#.....#.#.#.#...#.#...#.............#.#.# +#.###.#.#.#.#########.#########.#####.###.###.#.###.#####T#.#.###.#####.#####.#.# +#.#...#...#.....#...#.#.......#...#.....#.#.....#...#...#.#.#...#.....#.......#.# +#.#.###.#####.###.#.#.#.#####.###.#####.#.#######.#.#.###.#.###.#####.#########.# +#.#g....#.....#...#...#...#..d..#.......#...#.#...#.#...#.#...#...#.#.......#...# +#######.#.###.#.#####.#####.###########.###.#.#.#.#.###.#.#######.#.#######.###.# +#.....#.#...#.#.....#.#...#.......#...#.#...#...#.#.....#.....#...#.......#.#...# +#.###.#####.#######.###.#.#.###.###.#.#.#.#######.#.#########.#.#####.#####.#.#.# +#.#.E.....#...#...#.....#.#...#.....#.#.#.#.......#.#.......#...#.....#.....#.#.# +#.#.#####.###.#.#.#######.###.#######.#.#.#.#######.#.#.###.#####.###.#.#####.#.# +#.#.#...#.....#.#.........#...#.....#.#.#.#...#.....#.#...#.#.....#w..#...#..s#.# +#.###.#.#####.#.#.#########.###.###.#.#.#.###.#######.###.###.###.###.###.###.#.# +#.#...#.....#.#.#.#...#.#...#...#...#...#.#...#.......#.#.......#...#...#.....#.# +#.#.#######.#.#.###.#.#.#.###.###.#.#####.#.###.#######.#######.###.#.#########.# +#.#.#.....#.#.#.....#.#...#.#.#...#.....#.#...............#...#...#.#.#.........# +#.#.#.###.#.#.#########.###.#.#.#######.#.###############.#.#####.#.###.######### +#.#.#.#...#.#...#...#...#.....#...#.....#.#...........#...#.#.....#.#...#.......# +#.#.###.#.#.#####.#.#.#########.#.#######.#.#########.#####.#######.#.###.#####.# +#.#.#...#.#.....L.#.#.#.......#.#.......#...#.....#.#...#...#.....#.#.#.......#.# +#.#.#.###.#########.#.#.#####.#.#######.#.###.#.#.#.###.#.###.###.#.#.#######.#.# +#.#.#.#.#.#.......#...#...#...#.#.......#.#.#.#.#.....#.#.#...#...#.#.....#...#.# +#.#.#.#.#.#.###.#.#######.#.#####.#######.#.#.#.#######.#.###.#.###.#####.#.###.# +#.#...#.#.#.#...#.#.......#.#...#....c..#.#...#.#.....#.#.....#.#.......#.#.R.#.# +#.#####.#.###S###.#.#.#####.#.#.#######.#.#####.#.###.#.#######.#.###.###.#####.# +#.......#.....#...#.#.#...#...#.....#...#.....#.#.#...#...#.....#...#...#...#e..# +#.#####.#######B#####.#.###########.#.#######.#.#.#.###.###.#######.###.###.#.#.# +#.....#.........#.....#.....#.....#.#...#...#...#.#...#...#.....#...#.....#.#.#.# +#####.###########.#####.###.#.###.#.###.###.###.#.###.###.#####.#####.###.#.#.#.# +#...#.....#.......#.#.....#.#...#.#...#.#.....#.#.#.......#...#...#...#...#.#.#.# +###.#####.#.#######.#.#####N###.#.###.#.#.#####.#.#######.#.#.###.#.#######.#.#.# +#...#.....#...#..o....#.#...#...#...#...#.#.....#.......#.#j#...#y#.......#.#.#.# +#.###.#######.#.#######.#.###.###.#####.#.#.###########.###.#.###.#.#####.#.#X#.# +#.............#........v#.......#.U.....#.Q...........#.....#.....#.....#.....#.# +################################################################################# diff --git a/2019/day18/main.go b/2019/day18/main.go new file mode 100644 index 0000000..b740b88 --- /dev/null +++ b/2019/day18/main.go @@ -0,0 +1,77 @@ +package main + +import ( + "bytes" + "errors" + "fmt" + + helpers "git.bullercodeworks.com/brian/adventofcode/helpers" +) + +var maxX, maxY int +var vault map[helpers.Coordinate]byte +var keys map[helpers.Coordinate]byte +var doors map[helpers.Coordinate]byte + +func main() { + file := "input" + if helpers.GetArgNumber(1) != "" { + file = helpers.GetArgNumber(1) + } + inp := helpers.FileToBytes(file) + wrk := bytes.Split(inp, []byte{'\n'}) + maxY = len(wrk) + vault = make(map[helpers.Coordinate]byte) + keys = make(map[helpers.Coordinate]byte) + doors = make(map[helpers.Coordinate]byte) + maxX = len(wrk[0]) + for y, yv := range wrk { + for x, xv := range yv { + vault[*helpers.NewCoordinate(x, y)] = xv + if isKey(xv) { + keys[*helpers.NewCoordinate(x, y)] = xv + } else if isDoor(xv) { + doors[*helpers.NewCoordinate(x, y)] = xv + } + } + } + + PrintVault() +} + +func isDoor(b byte) bool { + return b >= 'A' && b <= 'Z' +} +func isKey(b byte) bool { + return b >= 'a' && b <= 'z' +} + +func keyToDoor(b byte) byte { + return (b - 'a') + 'A' +} + +func doorToKey(b byte) byte { + return (b - 'A') + 'a' +} + +func findKey(b byte) (helpers.Coordinate, error) { + var r helpers.Coordinate + if !isDoor(b) { + return r, errors.New("Invalid Door") + } + + return r, nil +} + +func PrintVault() { + for y := 0; y < maxY; y++ { + for x := 0; x < maxX; x++ { + fmt.Print(string(vault[*helpers.NewCoordinate(x, y)])) + } + fmt.Println() + } +} + +func c(x, y int) string { + return fmt.Sprintf("[%d, %d]", x, y) +}