2022 Day 24 Complete
This commit is contained in:
parent
cdc31b204b
commit
ad6382f8bc
37
2022/day24/input
Normal file
37
2022/day24/input
Normal file
@ -0,0 +1,37 @@
|
||||
#.####################################################################################################
|
||||
#<>^<v<<vv^^v>^^<v>>v.<<^.v<v>>^v>v>>vv<.>>>^^v>^.><^>>v<>>>>v^^^.v^v<>^^v><^vv<vv<>v<^v>><<^.<<^>^<>#
|
||||
#>^v<^^>.<v<<^.<<<<^v<^<<><<<v^>^>>>^^>v>^^>v>^><^>^>vv^>vv>.^^<>.>>vv<^>.<<vv<vv<v^^><v<vv^^^<<>v<^>#
|
||||
#.^<.>v^>.>>>.<>^><vv>^^v^<<^<>v<v^.vv.>>>vv^<.<v<<<<.<.v<^<^v^>.vv>><<..v>>.v><^>v>^>^>^^><.<^<>>vv>#
|
||||
#>v^<<^v>vv<<.>>^<<<><>v>vv.<>v^vv<>v^^.<>vvv>^<<<>v^><>v<^.^^^.<v<^><>^v>>.v<<<^v<>.^v<>>vv<^v^<v>><#
|
||||
#.<><<>vv>><>.><<.>><>v>v^v^vv>.^^v>>>^v.><>>>>v^v^<v<><^.v>^v>><<^<>^v>..<<>^<v<^v.>^<>><.<^v^v.^><>#
|
||||
#><..v^v><<<v<^v^<<<<><<<>.<><v..<>v<<^^v>^^vvv^<v^v.v^<>v^<<><<v<<^vv>.v><<vv.v<.vvv>..>vv^v<<^<^^^>#
|
||||
#<>^>^>.v<>>v^^v>^>v^><v>.>><<>vv^^v>>v<v>><^v><<>>>^.^<v<..<<>.^^<.^>.><<<^v^><v^v>v..^^>^v<^.<v<<<>#
|
||||
#>^^.v^v<>.>><>vv>.<>><>>><<>v><.v<^^^<>v>^v><^^<^.v.>>>v>v.vv>v>>v^.>.^>v^^<><vvv>>v>^v^<.v>^.>v><^>#
|
||||
#<^<<>..<<v<.v^<v<vv^^.<^^.<>>.vvv>>^.vv<><v.vv^>><>^<<>v.<.^v>v>^><>^^<v<><><>^^.vv<v^<>.>^v>^^v<><>#
|
||||
#><.><v>^v><>..v>vv<<v<<.v<<<v^^<vv.<>^<><v.^^v.v<^<<v.v^vv>>^.^v<<v.v<v<.<v^vv>^vv<^>>^vvvv>^^>>^^><#
|
||||
#<^<>vvv>^.>v>>.><>><v>^.>v<>v^v^<^<^^><>>v<v<vv>^><^>.^v^v<^^v><>>v^^<<<vvv.^^>>>^><<<^v><>^^^.v<<v>#
|
||||
#.^^.<v>>v.>^.v<^.^.^vv^<>>.v>^<>v<v^v>>^v><<vv^^.v>^v>vvv^^^<>^<>^>vv>vvv.<>vv>^<.v>.<>.vv<>>.>vvv<>#
|
||||
#<^^<.^>>v><><^v<.<.><<v^v>v>>v>v^.<.v<.v.v<.>><^>^v<<^^<^^^.^.>>.v>^><v<^><<^>^.>^v^^>v^v<>^>^<.>.><#
|
||||
#<.^v>>>.v<<<^.v.>v^^<^>v<<v<^>^v^v^.^<>><v^v<<v.<vv<>^v>^v.^><^.v>><>vvv^^<<^>.<v<<<v<>^vv.^v.vv<..<#
|
||||
#.v^v>>v^vv^v>v.v<v>v>^<<v^v><..v<<>>vv^<<v><^^<<<<^>v>vv^<^v^vv><.^^<v^<^vv^<<>>v^><v.^^^vvv>^>^>^v>#
|
||||
#<>.>^vv<>v^<vv<<^<.^^^.v>^><>><^^>v<<^^>^>.^^<.v><>v<v>^^v>>^>>.>>.<>vv><^^<^<<>><^vv>>v>^^.^><.<vv<#
|
||||
#<^>^v^<^<><<^vv>><v^.v<>>.v<v<><>^v^^<<><>v>^v^v>^^^vvv>>v^<v^^v.v.v<>>>v>><>><>>^..v<>><^v^>><.>^<<#
|
||||
#<v^^>>^^<^>.<^>>>v<<v.<.^>vv^^><<vvv<>vvvv^<v^<^<<<v<>>^>vv<^<.v<<<>><v<<v>^v>>.<v<vv^.>.><v^vv<>^.>#
|
||||
#>>v>^<.>.v<v.<<<<<v.>^>>>.>v<v>.vv^>^>v>^<>^.^^<v>^^>><><v^^.^>..^.>v>^<v<^v^.>v.v.^<><<><<v<<<^>>><#
|
||||
#<>v>>.v>.^>^<<><^v<.>^vv.>^.<v.>.>v<<^^>^><vvv>>vv<>^v.<^v<^>><<<<^^v^v<<^^v.<>^<v^>vvv>^<v>><<>^>^<#
|
||||
#<><<v<<<.v>^><^.v<>^vv>v><vv.v><v<v^v>^>^^<.>^^^^vv<>v<^.vvv.^v^>>^.v>><v^>.>v^v<.><>.>>v>v<>>>v^<^<#
|
||||
#<^<<<v..<>^<v^<>v>v<vv<v^<<.v^<<<^><v^^>><<v>^v.>>^.vv>>^v<.vv^v<^v^.^^.<.vv>>v>>^<^<<.>>><<<<vv^vv<#
|
||||
#<><>vv>^.vv><^^>^>^v^><v<>v>.<>>^v^<>^^^^v^v>>v<<<^v^>>^v^v<vv>vv>v>.><<^^>^<><><<<^<v>vv<<<^<>>^^v>#
|
||||
#<><<<<v>>v><^>vv<^><><>^<<^^>^.^^><.vvv<^<>^v^v^v>><>^<vv><^>>><.v<^^>>^vvv^^^v<.>vv^v>v^<<>v.^<.>v<#
|
||||
#.>>vv<.<vvv^>v^^v>v<v<^^v^^^.v^>>..^<<^^>><^<>v>.>>.<^><v>><><>v^<^^^v^>v^v>^<><<^>><^<..v><>>^<<v<>#
|
||||
#>v.>v>v^^v.v<v^<<<<>><>.<^v>^^<>^^>v^^>>..v^.v<>v>^v>..<v>><^<<><v<^<<.>^>^^<^v>.<v^^<>v..>v^v^^..><#
|
||||
#<v.><^v<><^^<.>><<>^^<v<v.v><><.<.>^.vv><v.<>^vv><v>>.<><>^^>><vv^^vvv>>v<^^v.><<>><>^^<^><<><>>>>^.#
|
||||
#><<v<v^v<<>^<>v<^><><<<><<v<>^<v^.v>>^<^>^^v<><<<v.v><<>>><>.^.>v<v<^^.^.>v>v>^<v>^<<>^>.<^<vv^<.v>>#
|
||||
#.v<<<.v<^>>^<>>v<>v.><>^^v>v<vvvv<<>v<<^.v<^^v>.v>^v>^..^<<.<..^>^.<v<.<<<.<vv^<v<>^.v^^><>>>^..^vv>#
|
||||
#<>^>>^^v^>>>.>v^v<^^<<v^^><^<><v.^^v^v<>v>>.>><vv><<<><^v.v<>v><><v<.v<>^v>>>^^v<<v<v>^>vv^v>^v>^.<<#
|
||||
#><v^<><v<>vvvv.>vvvvv^.<<<><v.><^^v<v><<>^^.<^>v<^v>.^><>>v.<^.<<.^^.>vv<<<<^.>^^v<v^....v>>>><v.><<#
|
||||
#<^>.<<^^^<<>.<>v^^^v<<^>>vv<^.<>>v.^v<^^.<v>v<>^^v>>v.^>vv<<<<>vvv<<.^>v<v<.>>v<^v^vv^<^.^>v.>^.>^^<#
|
||||
#<><^<v.^><><v^<<><.>>^^>>v><^<^^v>>^>>^>^<>^>v<^><.<>v^<^v^<<<v^.>..<<vvv<>..v^>>>v>v<<>..<>>>vvv><<#
|
||||
#<>>vv>v.^v>.^<><>.v..<<^v><v^>v^v>^^><.>>><<^>v<v<>^^^^vv.<>v.vv>>^<^.>^<>.<^>^<<^v^^<v<>v>^>vv>^<>.#
|
||||
#<v<>><v^^v.^^^<^v>^>>v>v<>^<v.^^><.<.>><^^<.vvv<<<.vv^>^>^<v^v.>^vv<^>^>vvv^^^.v<<<^^<>v<<><vv^<<<>>#
|
||||
####################################################################################################.#
|
121
2022/day24/main.go
Normal file
121
2022/day24/main.go
Normal file
@ -0,0 +1,121 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
h "git.bullercodeworks.com/brian/adventofcode/helpers"
|
||||
)
|
||||
|
||||
func main() {
|
||||
input := h.StdinToStringSlice()
|
||||
part1(input)
|
||||
part2(input)
|
||||
}
|
||||
|
||||
func part1(input []string) {
|
||||
field, blizzards, start, target := parseInput(input)
|
||||
fmt.Println("# Part 1")
|
||||
fmt.Println(run(field, blizzards, start, target))
|
||||
}
|
||||
|
||||
func part2(input []string) {
|
||||
field, blizzards, start, target := parseInput(input)
|
||||
fmt.Println("# Part 2")
|
||||
fmt.Println(run(field, blizzards, start, target) +
|
||||
run(field, blizzards, target, start) +
|
||||
run(field, blizzards, start, target))
|
||||
}
|
||||
|
||||
type Blizzard struct {
|
||||
pos, dir, wrap h.Coordinate
|
||||
}
|
||||
|
||||
var (
|
||||
U = h.Coordinate{X: 0, Y: -1}
|
||||
D = h.Coordinate{X: 0, Y: 1}
|
||||
L = h.Coordinate{X: -1, Y: 0}
|
||||
R = h.Coordinate{X: 1, Y: 0}
|
||||
)
|
||||
|
||||
var directions []h.Coordinate = []h.Coordinate{U, D, L, R}
|
||||
|
||||
func parseInput(lines []string) (field [][]rune, blizzards []Blizzard, start, target h.Coordinate) {
|
||||
start.X = strings.Index(lines[0], "E")
|
||||
if start.X == -1 {
|
||||
start.X = strings.Index(lines[0], ".")
|
||||
}
|
||||
target.Y = len(lines) - 1
|
||||
target.X = strings.Index(lines[target.Y], ".")
|
||||
for _, line := range lines {
|
||||
line = strings.TrimSpace(line)
|
||||
field = append(field, []rune(line))
|
||||
}
|
||||
for y, row := range field {
|
||||
for x, c := range row {
|
||||
switch c {
|
||||
case '^':
|
||||
blizzards = append(blizzards, Blizzard{
|
||||
h.Coordinate{X: x, Y: y}, U, h.Coordinate{X: x, Y: len(field) - 2},
|
||||
})
|
||||
case 'v':
|
||||
blizzards = append(blizzards, Blizzard{
|
||||
h.Coordinate{X: x, Y: y}, D, h.Coordinate{X: x, Y: 1},
|
||||
})
|
||||
case '<':
|
||||
blizzards = append(blizzards, Blizzard{
|
||||
h.Coordinate{X: x, Y: y}, L, h.Coordinate{X: len(field[0]) - 2, Y: y},
|
||||
})
|
||||
case '>':
|
||||
blizzards = append(blizzards, Blizzard{
|
||||
h.Coordinate{X: x, Y: y}, R, h.Coordinate{X: 1, Y: y},
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func valid(field [][]rune, pos h.Coordinate) bool {
|
||||
return pos.X >= 0 && pos.X < len(field[0]) && pos.Y >= 0 && pos.Y < len(field)
|
||||
}
|
||||
|
||||
func run(field [][]rune, blizzards []Blizzard, start, target h.Coordinate) int {
|
||||
minutes := 0
|
||||
currentStep := make(map[h.Coordinate]bool)
|
||||
currentStep[start] = true
|
||||
|
||||
for !currentStep[target] {
|
||||
//update blizzards
|
||||
whereBlizzards := make(map[h.Coordinate]bool)
|
||||
for i, b := range blizzards {
|
||||
bb := b.pos.Add(b.dir)
|
||||
if valid(field, bb) {
|
||||
if field[bb.Y][bb.X] == '#' {
|
||||
blizzards[i].pos = b.wrap
|
||||
} else {
|
||||
blizzards[i].pos = bb
|
||||
}
|
||||
}
|
||||
whereBlizzards[blizzards[i].pos] = true
|
||||
}
|
||||
|
||||
//find new steps
|
||||
newStep := make(map[h.Coordinate]bool)
|
||||
for pos := range currentStep {
|
||||
if !(whereBlizzards[pos]) {
|
||||
newStep[pos] = true
|
||||
}
|
||||
for _, d := range directions {
|
||||
n := pos.Add(d)
|
||||
if valid(field, n) && field[n.Y][n.X] != '#' && !whereBlizzards[n] {
|
||||
newStep[n] = true
|
||||
}
|
||||
}
|
||||
}
|
||||
currentStep = newStep
|
||||
minutes++
|
||||
}
|
||||
|
||||
return minutes
|
||||
}
|
366
2022/day24/problem
Normal file
366
2022/day24/problem
Normal file
@ -0,0 +1,366 @@
|
||||
Advent of Code
|
||||
|
||||
• [About]
|
||||
• [Events]
|
||||
• [Shop]
|
||||
• [Settings]
|
||||
• [Log Out]
|
||||
|
||||
br0xen (AoC++) 41*
|
||||
|
||||
int y=2022;
|
||||
|
||||
• [Calendar]
|
||||
• [AoC++]
|
||||
• [Sponsors]
|
||||
• [Leaderboard]
|
||||
• [Stats]
|
||||
|
||||
Our sponsors help make Advent of Code possible:
|
||||
Smarty - Join our private leaderboard and solve our
|
||||
puzzles for BIG PRIZES!!! ----------------- Address
|
||||
Validation and Autocomplete, and more!
|
||||
|
||||
--- Day 24: Blizzard Basin ---
|
||||
|
||||
With everything replanted for next year (and with
|
||||
elephants and monkeys to tend the grove), you and the
|
||||
Elves leave for the extraction point.
|
||||
|
||||
Partway up the mountain that shields the grove is a
|
||||
flat, open area that serves as the extraction point.
|
||||
It's a bit of a climb, but nothing the expedition can't
|
||||
handle.
|
||||
|
||||
At least, that would normally be true; now that the
|
||||
mountain is covered in snow, things have become more
|
||||
difficult than the Elves are used to.
|
||||
|
||||
As the expedition reaches a valley that must be
|
||||
traversed to reach the extraction site, you find that
|
||||
strong, turbulent winds are pushing small blizzards of
|
||||
snow and sharp ice around the valley. It's a good thing
|
||||
everyone packed warm clothes! To make it across safely,
|
||||
you'll need to find a way to avoid them.
|
||||
|
||||
Fortunately, it's easy to see all of this from the
|
||||
entrance to the valley, so you make a map of the valley
|
||||
and the blizzards (your puzzle input). For example:
|
||||
|
||||
#.#####
|
||||
#.....#
|
||||
#>....#
|
||||
#.....#
|
||||
#...v.#
|
||||
#.....#
|
||||
#####.#
|
||||
|
||||
The walls of the valley are drawn as #; everything else
|
||||
is ground. Clear ground - where there is currently no
|
||||
blizzard - is drawn as .. Otherwise, blizzards are
|
||||
drawn with an arrow indicating their direction of
|
||||
motion: up (^), down (v), left (<), or right (>).
|
||||
|
||||
The above map includes two blizzards, one moving right
|
||||
(>) and one moving down (v). In one minute, each
|
||||
blizzard moves one position in the direction it is
|
||||
pointing:
|
||||
|
||||
#.#####
|
||||
#.....#
|
||||
#.>...#
|
||||
#.....#
|
||||
#.....#
|
||||
#...v.#
|
||||
#####.#
|
||||
|
||||
Due to conservation of blizzard energy, as a blizzard
|
||||
reaches the wall of the valley, a new blizzard forms on
|
||||
the opposite side of the valley moving in the same
|
||||
direction. After another minute, the bottom
|
||||
downward-moving blizzard has been replaced with a new
|
||||
downward-moving blizzard at the top of the valley
|
||||
instead:
|
||||
|
||||
#.#####
|
||||
#...v.#
|
||||
#..>..#
|
||||
#.....#
|
||||
#.....#
|
||||
#.....#
|
||||
#####.#
|
||||
|
||||
Because blizzards are made of tiny snowflakes, they
|
||||
pass right through each other. After another minute,
|
||||
both blizzards temporarily occupy the same position,
|
||||
marked 2:
|
||||
|
||||
#.#####
|
||||
#.....#
|
||||
#...2.#
|
||||
#.....#
|
||||
#.....#
|
||||
#.....#
|
||||
#####.#
|
||||
|
||||
After another minute, the situation resolves itself,
|
||||
giving each blizzard back its personal space:
|
||||
|
||||
#.#####
|
||||
#.....#
|
||||
#....>#
|
||||
#...v.#
|
||||
#.....#
|
||||
#.....#
|
||||
#####.#
|
||||
|
||||
Finally, after yet another minute, the rightward-facing
|
||||
blizzard on the right is replaced with a new one on the
|
||||
left facing the same direction:
|
||||
|
||||
#.#####
|
||||
#.....#
|
||||
#>....#
|
||||
#.....#
|
||||
#...v.#
|
||||
#.....#
|
||||
#####.#
|
||||
|
||||
This process repeats at least as long as you are
|
||||
observing it, but probably forever.
|
||||
|
||||
Here is a more complex example:
|
||||
|
||||
#.######
|
||||
#>>.<^<#
|
||||
#.<..<<#
|
||||
#>v.><>#
|
||||
#<^v^^>#
|
||||
######.#
|
||||
|
||||
Your expedition begins in the only non-wall position in
|
||||
the top row and needs to reach the only non-wall
|
||||
position in the bottom row. On each minute, you can
|
||||
move up, down, left, or right, or you can wait in
|
||||
place. You and the blizzards act simultaneously, and
|
||||
you cannot share a position with a blizzard.
|
||||
|
||||
In the above example, the fastest way to reach your
|
||||
goal requires 18 steps. Drawing the position of the
|
||||
expedition as E, one way to achieve this is:
|
||||
|
||||
Initial state:
|
||||
#E######
|
||||
#>>.<^<#
|
||||
#.<..<<#
|
||||
#>v.><>#
|
||||
#<^v^^>#
|
||||
######.#
|
||||
|
||||
Minute 1, move down:
|
||||
#.######
|
||||
#E>3.<.#
|
||||
#<..<<.#
|
||||
#>2.22.#
|
||||
#>v..^<#
|
||||
######.#
|
||||
|
||||
Minute 2, move down:
|
||||
#.######
|
||||
#.2>2..#
|
||||
#E^22^<#
|
||||
#.>2.^>#
|
||||
#.>..<.#
|
||||
######.#
|
||||
|
||||
Minute 3, wait:
|
||||
#.######
|
||||
#<^<22.#
|
||||
#E2<.2.#
|
||||
#><2>..#
|
||||
#..><..#
|
||||
######.#
|
||||
|
||||
Minute 4, move up:
|
||||
#.######
|
||||
#E<..22#
|
||||
#<<.<..#
|
||||
#<2.>>.#
|
||||
#.^22^.#
|
||||
######.#
|
||||
|
||||
Minute 5, move right:
|
||||
#.######
|
||||
#2Ev.<>#
|
||||
#<.<..<#
|
||||
#.^>^22#
|
||||
#.2..2.#
|
||||
######.#
|
||||
|
||||
Minute 6, move right:
|
||||
#.######
|
||||
#>2E<.<#
|
||||
#.2v^2<#
|
||||
#>..>2>#
|
||||
#<....>#
|
||||
######.#
|
||||
|
||||
Minute 7, move down:
|
||||
#.######
|
||||
#.22^2.#
|
||||
#<vE<2.#
|
||||
#>>v<>.#
|
||||
#>....<#
|
||||
######.#
|
||||
|
||||
Minute 8, move left:
|
||||
#.######
|
||||
#.<>2^.#
|
||||
#.E<<.<#
|
||||
#.22..>#
|
||||
#.2v^2.#
|
||||
######.#
|
||||
|
||||
Minute 9, move up:
|
||||
#.######
|
||||
#<E2>>.#
|
||||
#.<<.<.#
|
||||
#>2>2^.#
|
||||
#.v><^.#
|
||||
######.#
|
||||
|
||||
Minute 10, move right:
|
||||
#.######
|
||||
#.2E.>2#
|
||||
#<2v2^.#
|
||||
#<>.>2.#
|
||||
#..<>..#
|
||||
######.#
|
||||
|
||||
Minute 11, wait:
|
||||
#.######
|
||||
#2^E^2>#
|
||||
#<v<.^<#
|
||||
#..2.>2#
|
||||
#.<..>.#
|
||||
######.#
|
||||
|
||||
Minute 12, move down:
|
||||
#.######
|
||||
#>>.<^<#
|
||||
#.<E.<<#
|
||||
#>v.><>#
|
||||
#<^v^^>#
|
||||
######.#
|
||||
|
||||
Minute 13, move down:
|
||||
#.######
|
||||
#.>3.<.#
|
||||
#<..<<.#
|
||||
#>2E22.#
|
||||
#>v..^<#
|
||||
######.#
|
||||
|
||||
Minute 14, move right:
|
||||
#.######
|
||||
#.2>2..#
|
||||
#.^22^<#
|
||||
#.>2E^>#
|
||||
#.>..<.#
|
||||
######.#
|
||||
|
||||
Minute 15, move right:
|
||||
#.######
|
||||
#<^<22.#
|
||||
#.2<.2.#
|
||||
#><2>E.#
|
||||
#..><..#
|
||||
######.#
|
||||
|
||||
Minute 16, move right:
|
||||
#.######
|
||||
#.<..22#
|
||||
#<<.<..#
|
||||
#<2.>>E#
|
||||
#.^22^.#
|
||||
######.#
|
||||
|
||||
Minute 17, move down:
|
||||
#.######
|
||||
#2.v.<>#
|
||||
#<.<..<#
|
||||
#.^>^22#
|
||||
#.2..2E#
|
||||
######.#
|
||||
|
||||
Minute 18, move down:
|
||||
#.######
|
||||
#>2.<.<#
|
||||
#.2v^2<#
|
||||
#>..>2>#
|
||||
#<....>#
|
||||
######E#
|
||||
|
||||
What is the fewest number of minutes required to avoid
|
||||
the blizzards and reach the goal?
|
||||
|
||||
Your puzzle answer was 240.
|
||||
|
||||
--- Part Two ---
|
||||
|
||||
As the expedition reaches the far side of the valley,
|
||||
one of the Elves looks especially dismayed:
|
||||
|
||||
He forgot his snacks at the entrance to the valley!
|
||||
|
||||
Since you're so good at dodging blizzards, the Elves
|
||||
humbly request that you go back for his snacks. From
|
||||
the same initial conditions, how quickly can you make
|
||||
it from the start to the goal, then back to the start,
|
||||
then back to the goal?
|
||||
|
||||
In the above example, the first trip to the goal takes
|
||||
18 minutes, the trip back to the start takes 23
|
||||
minutes, and the trip back to the goal again takes 13
|
||||
minutes, for a total time of 54 minutes.
|
||||
|
||||
What is the fewest number of minutes required to reach
|
||||
the goal, go back to the start, then reach the goal
|
||||
again?
|
||||
|
||||
Your puzzle answer was 717.
|
||||
|
||||
Both parts of this puzzle are complete! They provide
|
||||
two gold stars: **
|
||||
|
||||
At this point, you should return to your Advent
|
||||
calendar and try another puzzle.
|
||||
|
||||
If you still want to see it, you can get your puzzle
|
||||
input.
|
||||
|
||||
You can also [Shareon Twitter Mastodon] this puzzle.
|
||||
|
||||
References
|
||||
|
||||
Visible links
|
||||
. https://adventofcode.com/
|
||||
. https://adventofcode.com/2022/about
|
||||
. https://adventofcode.com/2022/events
|
||||
. https://teespring.com/stores/advent-of-code
|
||||
. https://adventofcode.com/2022/settings
|
||||
. https://adventofcode.com/2022/auth/logout
|
||||
. Advent of Code Supporter
|
||||
https://adventofcode.com/2022/support
|
||||
. https://adventofcode.com/2022
|
||||
. https://adventofcode.com/2022
|
||||
. https://adventofcode.com/2022/support
|
||||
. https://adventofcode.com/2022/sponsors
|
||||
. https://adventofcode.com/2022/leaderboard
|
||||
. https://adventofcode.com/2022/stats
|
||||
. https://adventofcode.com/2022/sponsors
|
||||
. https://www.smarty.com/advent-of-code
|
||||
. https://adventofcode.com/2022
|
||||
. https://adventofcode.com/2022/day/24/input
|
||||
. https://twitter.com/intent/tweet?text=I%27ve+completed+%22Blizzard+Basin%22+%2D+Day+24+%2D+Advent+of+Code+2022&url=https%3A%2F%2Fadventofcode%2Ecom%2F2022%2Fday%2F24&related=ericwastl&hashtags=AdventOfCode
|
||||
. javascript:void(0);
|
7
2022/day24/testinput
Normal file
7
2022/day24/testinput
Normal file
@ -0,0 +1,7 @@
|
||||
#.#####
|
||||
#.....#
|
||||
#>....#
|
||||
#.....#
|
||||
#...v.#
|
||||
#.....#
|
||||
#####.#
|
6
2022/day24/testinput2
Normal file
6
2022/day24/testinput2
Normal file
@ -0,0 +1,6 @@
|
||||
#.######
|
||||
#>>.<^<#
|
||||
#.<..<<#
|
||||
#>v.><>#
|
||||
#<^v^^>#
|
||||
######.#
|
@ -38,6 +38,12 @@ func (c *Coordinate) MoveNW() {
|
||||
c.X--
|
||||
c.Y--
|
||||
}
|
||||
func (c Coordinate) Add(o Coordinate) Coordinate {
|
||||
return Coordinate{
|
||||
X: c.X + o.X,
|
||||
Y: c.Y + o.Y,
|
||||
}
|
||||
}
|
||||
|
||||
func (c Coordinate) North() Coordinate {
|
||||
return Coordinate{X: c.X, Y: c.Y - 1}
|
||||
|
Loading…
Reference in New Issue
Block a user