2019 Day 18 started
This commit is contained in:
		
							
								
								
									
										81
									
								
								2019/day18/input
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										81
									
								
								2019/day18/input
									
									
									
									
									
										Normal file
									
								
							@@ -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...........#.....#.....#.....#.....#.#
 | 
			
		||||
#################################################################################
 | 
			
		||||
							
								
								
									
										77
									
								
								2019/day18/main.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										77
									
								
								2019/day18/main.go
									
									
									
									
									
										Normal file
									
								
							@@ -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)
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user