From 67300ad82fa9d886f171dba965ad956ca254f057 Mon Sep 17 00:00:00 2001 From: Brian Buller Date: Mon, 5 Dec 2022 09:47:05 -0600 Subject: [PATCH] 2022 Day 5 Complete --- 2022/day05/input | 511 +++++++++++++++++++++++++++++++++++++++++++ 2022/day05/main.go | 121 ++++++++++ 2022/day05/problem | 161 ++++++++++++++ 2022/day05/testinput | 9 + helpers/helpers.go | 2 +- 5 files changed, 803 insertions(+), 1 deletion(-) create mode 100644 2022/day05/input create mode 100644 2022/day05/main.go create mode 100644 2022/day05/problem create mode 100644 2022/day05/testinput diff --git a/2022/day05/input b/2022/day05/input new file mode 100644 index 0000000..b8e9535 --- /dev/null +++ b/2022/day05/input @@ -0,0 +1,511 @@ +[N] [R] [C] +[T] [J] [S] [J] [N] +[B] [Z] [H] [M] [Z] [D] +[S] [P] [G] [L] [H] [Z] [T] +[Q] [D] [F] [D] [V] [L] [S] [M] +[H] [F] [V] [J] [C] [W] [P] [W] [L] +[G] [S] [H] [Z] [Z] [T] [F] [V] [H] +[R] [H] [Z] [M] [T] [M] [T] [Q] [W] + 1 2 3 4 5 6 7 8 9 + +move 3 from 9 to 7 +move 4 from 4 to 5 +move 2 from 4 to 6 +move 4 from 7 to 5 +move 3 from 7 to 3 +move 2 from 5 to 9 +move 5 from 6 to 3 +move 5 from 9 to 1 +move 3 from 8 to 4 +move 3 from 4 to 6 +move 8 from 1 to 8 +move 1 from 8 to 6 +move 2 from 8 to 2 +move 5 from 8 to 4 +move 1 from 8 to 1 +move 6 from 6 to 4 +move 1 from 7 to 9 +move 5 from 1 to 7 +move 1 from 1 to 2 +move 2 from 9 to 8 +move 6 from 4 to 9 +move 1 from 6 to 8 +move 3 from 2 to 7 +move 4 from 2 to 8 +move 4 from 9 to 3 +move 6 from 5 to 4 +move 7 from 8 to 1 +move 10 from 4 to 1 +move 12 from 1 to 5 +move 1 from 4 to 9 +move 1 from 2 to 3 +move 2 from 9 to 1 +move 1 from 9 to 3 +move 1 from 6 to 7 +move 1 from 9 to 1 +move 3 from 1 to 3 +move 9 from 5 to 9 +move 2 from 2 to 7 +move 2 from 7 to 4 +move 3 from 9 to 4 +move 7 from 5 to 7 +move 5 from 1 to 3 +move 2 from 4 to 5 +move 1 from 4 to 6 +move 1 from 6 to 9 +move 4 from 9 to 2 +move 12 from 7 to 9 +move 2 from 4 to 9 +move 6 from 5 to 9 +move 3 from 7 to 6 +move 12 from 9 to 6 +move 5 from 9 to 1 +move 1 from 7 to 6 +move 14 from 6 to 1 +move 20 from 3 to 5 +move 5 from 9 to 5 +move 3 from 2 to 8 +move 1 from 6 to 4 +move 1 from 9 to 2 +move 1 from 4 to 6 +move 1 from 2 to 6 +move 16 from 1 to 5 +move 1 from 2 to 1 +move 12 from 5 to 6 +move 1 from 8 to 4 +move 29 from 5 to 1 +move 5 from 6 to 9 +move 20 from 1 to 3 +move 4 from 1 to 3 +move 11 from 3 to 8 +move 1 from 4 to 3 +move 4 from 9 to 8 +move 7 from 1 to 8 +move 2 from 3 to 2 +move 2 from 6 to 7 +move 1 from 9 to 8 +move 10 from 3 to 5 +move 1 from 6 to 1 +move 1 from 7 to 2 +move 3 from 1 to 2 +move 6 from 2 to 4 +move 2 from 6 to 3 +move 4 from 6 to 5 +move 1 from 6 to 2 +move 1 from 2 to 9 +move 6 from 5 to 2 +move 1 from 9 to 3 +move 24 from 8 to 7 +move 1 from 4 to 8 +move 5 from 5 to 4 +move 1 from 4 to 8 +move 1 from 8 to 7 +move 2 from 8 to 9 +move 1 from 9 to 7 +move 6 from 2 to 4 +move 10 from 3 to 7 +move 3 from 5 to 3 +move 1 from 9 to 8 +move 3 from 3 to 8 +move 4 from 8 to 7 +move 1 from 4 to 6 +move 1 from 6 to 4 +move 13 from 4 to 3 +move 17 from 7 to 6 +move 1 from 6 to 3 +move 2 from 4 to 8 +move 3 from 7 to 5 +move 14 from 6 to 7 +move 1 from 5 to 9 +move 1 from 5 to 9 +move 2 from 6 to 7 +move 1 from 5 to 1 +move 1 from 1 to 6 +move 1 from 9 to 3 +move 29 from 7 to 4 +move 10 from 4 to 3 +move 6 from 7 to 5 +move 1 from 6 to 5 +move 1 from 9 to 7 +move 1 from 7 to 2 +move 4 from 3 to 2 +move 1 from 2 to 9 +move 1 from 8 to 5 +move 11 from 3 to 4 +move 24 from 4 to 7 +move 2 from 2 to 5 +move 10 from 3 to 2 +move 6 from 2 to 1 +move 5 from 4 to 7 +move 1 from 9 to 2 +move 3 from 5 to 1 +move 1 from 4 to 6 +move 4 from 2 to 3 +move 5 from 5 to 7 +move 2 from 5 to 3 +move 32 from 7 to 5 +move 16 from 5 to 1 +move 1 from 1 to 2 +move 3 from 2 to 9 +move 1 from 8 to 6 +move 3 from 7 to 6 +move 1 from 2 to 4 +move 5 from 6 to 8 +move 5 from 8 to 6 +move 2 from 9 to 3 +move 1 from 7 to 5 +move 9 from 5 to 4 +move 1 from 9 to 1 +move 2 from 3 to 1 +move 4 from 3 to 6 +move 1 from 3 to 8 +move 6 from 4 to 6 +move 6 from 5 to 9 +move 1 from 9 to 6 +move 1 from 5 to 1 +move 1 from 5 to 4 +move 1 from 3 to 6 +move 1 from 8 to 3 +move 1 from 4 to 2 +move 1 from 2 to 3 +move 17 from 6 to 4 +move 4 from 1 to 8 +move 3 from 9 to 6 +move 1 from 8 to 4 +move 1 from 9 to 7 +move 2 from 6 to 2 +move 1 from 7 to 8 +move 12 from 1 to 9 +move 8 from 9 to 2 +move 1 from 6 to 9 +move 6 from 2 to 8 +move 2 from 8 to 3 +move 18 from 4 to 9 +move 2 from 1 to 6 +move 1 from 6 to 5 +move 3 from 4 to 3 +move 7 from 3 to 8 +move 4 from 2 to 7 +move 1 from 4 to 6 +move 2 from 6 to 4 +move 13 from 9 to 6 +move 1 from 5 to 2 +move 5 from 9 to 3 +move 9 from 1 to 2 +move 1 from 1 to 8 +move 1 from 2 to 6 +move 3 from 7 to 6 +move 2 from 2 to 6 +move 9 from 8 to 6 +move 1 from 7 to 8 +move 1 from 8 to 7 +move 2 from 4 to 6 +move 5 from 3 to 6 +move 17 from 6 to 9 +move 7 from 8 to 4 +move 4 from 2 to 3 +move 17 from 6 to 2 +move 1 from 6 to 4 +move 1 from 7 to 8 +move 1 from 8 to 9 +move 24 from 9 to 6 +move 4 from 3 to 1 +move 1 from 1 to 5 +move 20 from 6 to 4 +move 4 from 6 to 9 +move 1 from 5 to 7 +move 2 from 4 to 2 +move 1 from 9 to 7 +move 25 from 4 to 3 +move 1 from 4 to 2 +move 2 from 1 to 6 +move 3 from 9 to 4 +move 2 from 4 to 7 +move 2 from 7 to 5 +move 1 from 4 to 2 +move 1 from 6 to 3 +move 1 from 1 to 5 +move 5 from 3 to 9 +move 1 from 5 to 6 +move 10 from 2 to 8 +move 9 from 2 to 5 +move 21 from 3 to 6 +move 1 from 7 to 6 +move 2 from 6 to 5 +move 5 from 9 to 7 +move 6 from 7 to 8 +move 19 from 6 to 9 +move 1 from 6 to 1 +move 8 from 8 to 1 +move 1 from 6 to 1 +move 2 from 8 to 5 +move 5 from 9 to 2 +move 6 from 8 to 2 +move 2 from 9 to 7 +move 9 from 9 to 4 +move 7 from 2 to 4 +move 1 from 6 to 4 +move 14 from 5 to 9 +move 1 from 1 to 8 +move 1 from 7 to 9 +move 4 from 2 to 9 +move 16 from 4 to 6 +move 3 from 2 to 8 +move 1 from 6 to 2 +move 2 from 8 to 9 +move 1 from 8 to 7 +move 1 from 8 to 3 +move 3 from 2 to 7 +move 1 from 3 to 9 +move 8 from 9 to 3 +move 4 from 7 to 8 +move 1 from 5 to 4 +move 4 from 6 to 3 +move 1 from 4 to 2 +move 9 from 3 to 8 +move 10 from 9 to 5 +move 8 from 6 to 7 +move 13 from 8 to 4 +move 8 from 5 to 2 +move 3 from 6 to 3 +move 7 from 9 to 6 +move 7 from 7 to 2 +move 2 from 4 to 6 +move 5 from 6 to 2 +move 3 from 1 to 5 +move 5 from 5 to 8 +move 4 from 6 to 2 +move 4 from 1 to 8 +move 15 from 2 to 6 +move 11 from 4 to 9 +move 12 from 6 to 8 +move 1 from 6 to 9 +move 5 from 3 to 7 +move 2 from 2 to 6 +move 6 from 7 to 1 +move 3 from 1 to 3 +move 1 from 4 to 1 +move 1 from 3 to 9 +move 1 from 3 to 9 +move 1 from 7 to 6 +move 1 from 3 to 2 +move 4 from 2 to 6 +move 4 from 2 to 7 +move 1 from 2 to 6 +move 4 from 1 to 6 +move 12 from 6 to 7 +move 2 from 6 to 1 +move 8 from 9 to 6 +move 1 from 7 to 4 +move 14 from 8 to 1 +move 8 from 1 to 5 +move 1 from 3 to 9 +move 5 from 9 to 5 +move 1 from 8 to 9 +move 1 from 9 to 2 +move 1 from 9 to 3 +move 5 from 8 to 3 +move 12 from 5 to 4 +move 1 from 9 to 2 +move 6 from 7 to 3 +move 7 from 3 to 2 +move 1 from 5 to 1 +move 1 from 8 to 3 +move 2 from 1 to 3 +move 2 from 6 to 9 +move 5 from 6 to 5 +move 5 from 1 to 7 +move 4 from 4 to 1 +move 7 from 2 to 8 +move 4 from 3 to 8 +move 1 from 9 to 3 +move 1 from 9 to 5 +move 4 from 1 to 8 +move 10 from 7 to 9 +move 1 from 6 to 7 +move 2 from 8 to 6 +move 6 from 4 to 2 +move 5 from 3 to 1 +move 2 from 6 to 3 +move 2 from 7 to 1 +move 5 from 2 to 5 +move 2 from 7 to 1 +move 7 from 5 to 7 +move 2 from 5 to 6 +move 2 from 5 to 3 +move 3 from 2 to 9 +move 9 from 9 to 3 +move 1 from 6 to 4 +move 3 from 3 to 1 +move 9 from 8 to 2 +move 6 from 3 to 6 +move 8 from 7 to 9 +move 4 from 9 to 8 +move 14 from 1 to 5 +move 1 from 9 to 2 +move 1 from 1 to 5 +move 2 from 3 to 6 +move 12 from 5 to 3 +move 2 from 2 to 8 +move 7 from 6 to 2 +move 12 from 2 to 8 +move 2 from 6 to 2 +move 6 from 9 to 6 +move 1 from 1 to 2 +move 1 from 9 to 3 +move 2 from 5 to 9 +move 1 from 9 to 2 +move 1 from 9 to 4 +move 1 from 3 to 2 +move 2 from 6 to 7 +move 2 from 6 to 9 +move 5 from 4 to 2 +move 14 from 3 to 9 +move 15 from 9 to 4 +move 1 from 7 to 4 +move 10 from 8 to 6 +move 1 from 5 to 9 +move 2 from 9 to 5 +move 10 from 8 to 1 +move 1 from 7 to 4 +move 5 from 1 to 2 +move 2 from 1 to 5 +move 3 from 4 to 6 +move 4 from 5 to 8 +move 5 from 8 to 6 +move 14 from 2 to 9 +move 2 from 6 to 7 +move 3 from 2 to 9 +move 3 from 1 to 7 +move 1 from 7 to 3 +move 3 from 7 to 1 +move 1 from 3 to 6 +move 1 from 7 to 6 +move 1 from 8 to 9 +move 2 from 1 to 4 +move 1 from 1 to 2 +move 16 from 9 to 4 +move 7 from 4 to 8 +move 5 from 8 to 1 +move 2 from 8 to 3 +move 2 from 1 to 7 +move 13 from 6 to 7 +move 2 from 2 to 3 +move 4 from 7 to 4 +move 6 from 4 to 5 +move 4 from 7 to 6 +move 3 from 1 to 2 +move 2 from 2 to 6 +move 3 from 3 to 8 +move 5 from 5 to 3 +move 2 from 9 to 6 +move 3 from 3 to 7 +move 1 from 8 to 1 +move 22 from 4 to 8 +move 1 from 4 to 3 +move 9 from 6 to 3 +move 1 from 2 to 1 +move 4 from 3 to 4 +move 2 from 4 to 5 +move 1 from 1 to 7 +move 4 from 3 to 7 +move 2 from 6 to 1 +move 1 from 6 to 7 +move 18 from 8 to 7 +move 2 from 6 to 5 +move 2 from 3 to 4 +move 1 from 5 to 4 +move 30 from 7 to 6 +move 2 from 1 to 3 +move 18 from 6 to 8 +move 12 from 6 to 4 +move 13 from 4 to 9 +move 2 from 3 to 8 +move 1 from 6 to 2 +move 3 from 7 to 2 +move 1 from 1 to 2 +move 2 from 5 to 9 +move 8 from 8 to 1 +move 1 from 7 to 8 +move 7 from 1 to 3 +move 2 from 4 to 9 +move 1 from 1 to 6 +move 4 from 2 to 1 +move 16 from 8 to 1 +move 1 from 2 to 6 +move 2 from 4 to 8 +move 2 from 5 to 1 +move 4 from 3 to 7 +move 3 from 7 to 1 +move 1 from 6 to 8 +move 1 from 8 to 9 +move 1 from 7 to 3 +move 6 from 3 to 5 +move 1 from 3 to 8 +move 1 from 6 to 9 +move 16 from 9 to 5 +move 4 from 5 to 3 +move 15 from 5 to 1 +move 1 from 5 to 8 +move 3 from 9 to 8 +move 9 from 8 to 5 +move 6 from 5 to 1 +move 4 from 5 to 6 +move 2 from 6 to 4 +move 1 from 6 to 4 +move 1 from 8 to 4 +move 3 from 3 to 6 +move 3 from 6 to 8 +move 1 from 6 to 8 +move 21 from 1 to 9 +move 4 from 8 to 5 +move 3 from 5 to 7 +move 2 from 5 to 1 +move 2 from 4 to 8 +move 2 from 8 to 2 +move 2 from 7 to 8 +move 1 from 7 to 9 +move 1 from 8 to 7 +move 5 from 1 to 8 +move 1 from 7 to 8 +move 4 from 8 to 4 +move 2 from 4 to 5 +move 1 from 2 to 7 +move 1 from 2 to 7 +move 2 from 7 to 6 +move 2 from 6 to 9 +move 1 from 4 to 9 +move 1 from 3 to 4 +move 16 from 1 to 5 +move 16 from 5 to 7 +move 2 from 5 to 4 +move 14 from 9 to 6 +move 5 from 4 to 3 +move 3 from 3 to 6 +move 5 from 1 to 4 +move 2 from 4 to 7 +move 7 from 9 to 4 +move 2 from 9 to 7 +move 10 from 6 to 9 +move 8 from 4 to 6 +move 1 from 8 to 4 +move 1 from 1 to 9 +move 14 from 6 to 3 +move 10 from 3 to 2 +move 3 from 7 to 8 +move 6 from 3 to 1 +move 2 from 7 to 9 +move 5 from 7 to 9 +move 10 from 9 to 1 +move 2 from 4 to 3 +move 1 from 2 to 1 +move 16 from 1 to 4 +move 1 from 6 to 1 +move 2 from 3 to 9 +move 3 from 8 to 5 +move 8 from 7 to 1 +move 3 from 5 to 9 +move 7 from 4 to 6 +move 7 from 1 to 5 +move 2 from 8 to 3 +move 1 from 7 to 8 diff --git a/2022/day05/main.go b/2022/day05/main.go new file mode 100644 index 0000000..f809123 --- /dev/null +++ b/2022/day05/main.go @@ -0,0 +1,121 @@ +package main + +import ( + "fmt" + "sort" + "strings" + + h "git.bullercodeworks.com/brian/adventofcode/helpers" +) + +func main() { + inp := h.StdinToStringSlice() + part1(inp) + fmt.Println("") + part2(inp) +} + +func part1(inp []string) { + fmt.Println("# Part 1") + stacks, bottom := buildStacks(inp) + + // Run instructions + // Instructions start at bottom+2 + for i := bottom + 2; i < len(inp); i++ { + inst := strings.Fields(inp[i]) + count := h.Atoi(inst[1]) + from := h.Atoi(inst[3]) + to := h.Atoi(inst[5]) + for c := 0; c < count; c++ { + moveCrates(stacks, from, to, 1) + } + } + + for i := range stacks { + fmt.Print(string(stacks[i][0])) + } + fmt.Println("") +} + +func part2(inp []string) { + fmt.Println("# Part 2") + stacks, bottom := buildStacks(inp) + + // Run instructions + // Instructions start at bottom+2 + for i := bottom + 2; i < len(inp); i++ { + inst := strings.Fields(inp[i]) + count := h.Atoi(inst[1]) + from := h.Atoi(inst[3]) + to := h.Atoi(inst[5]) + + moveCrates(stacks, from, to, count) + } + + for i := range stacks { + fmt.Print(string(stacks[i][0])) + } + fmt.Println("") +} + +func getCrateHash(stacks [][]byte) string { + var ret []byte + for i := range stacks { + for j := range stacks[i] { + ret = append(ret, stacks[i][j]) + } + } + sort.Slice(ret, func(p, q int) bool { + return ret[p] > ret[q] + }) + return string(ret) +} +func validateCrates(valid string, stacks [][]byte) bool { + return valid == getCrateHash(stacks) +} + +func buildStacks(inp []string) ([][]byte, int) { + var stacks [][]byte + // Find the bottom + var bottom int + for i, row := range inp { + if len(row) > 1 && row[1] == '1' { + bottom = i + break + } + } + // Allocate stacks + stCnt := strings.Fields(inp[bottom]) + for i := 0; i < len(stCnt); i++ { + stacks = append(stacks, []byte{}) + } + + // Build stacks + for i := bottom - 1; i >= 0; i-- { + for stI := 0; stI < len(stCnt); stI++ { + pos := stI*4 + 1 + if len(inp[i]) >= pos && (inp[i][pos] >= 'A' && inp[i][pos] <= 'Z') { + stacks[stI] = append([]byte{inp[i][pos]}, stacks[stI]...) + } + } + } + return stacks, bottom +} + +func moveCrates(stacks [][]byte, from, to, count int) { + var x []byte + if count > 1 { + x, stacks[from-1] = stacks[from-1][0:count], stacks[from-1][count:] + } else { + x, stacks[from-1] = []byte{stacks[from-1][0]}, stacks[from-1][count:] + } + for i := len(x) - 1; i >= 0; i-- { + stacks[to-1] = append([]byte{x[i]}, stacks[to-1]...) + } +} + +func printStacks(stacks [][]byte) { + for i := range stacks { + fmt.Println(i+1, string(stacks[i])) + } +} diff --git a/2022/day05/problem b/2022/day05/problem new file mode 100644 index 0000000..b1881a5 --- /dev/null +++ b/2022/day05/problem @@ -0,0 +1,161 @@ +Advent of Code +br0xen (AoC++) 10* + +--- Day 5: Supply Stacks --- + + The expedition can depart as soon as the final supplies have been unloaded from the + ships. Supplies are stored in stacks of marked crates, but because the needed supplies + are buried under many other crates, the crates need to be rearranged. + + The ship has a giant cargo crane capable of moving crates between stacks. To ensure none + of the crates get crushed or fall over, the crane operator will rearrange them in a + series of carefully-planned steps. After the crates are rearranged, the desired crates + will be at the top of each stack. + + The Elves don't want to interrupt the crane operator during this delicate procedure, but + they forgot to ask her which crate will end up where, and they want to be ready to unload + them as soon as possible so they can embark. + + They do, however, have a drawing of the starting stacks of crates and the rearrangement + procedure (your puzzle input). For example: + + [D] + [N] [C] + [Z] [M] [P] + 1 2 3 + + move 1 from 2 to 1 + move 3 from 1 to 3 + move 2 from 2 to 1 + move 1 from 1 to 2 + + In this example, there are three stacks of crates. Stack 1 contains two crates: crate Z + is on the bottom, and crate N is on top. Stack 2 contains three crates; from bottom to + top, they are crates M, C, and D. Finally, stack 3 contains a single crate, P. + + Then, the rearrangement procedure is given. In each step of the procedure, a quantity of + crates is moved from one stack to a different stack. In the first step of the above + rearrangement procedure, one crate is moved from stack 2 to stack 1, resulting in this + configuration: + + [D] + [N] [C] + [Z] [M] [P] + 1 2 3 + + In the second step, three crates are moved from stack 1 to stack 3. Crates are moved one + at a time, so the first crate to be moved (D) ends up below the second and third crates: + + [Z] + [N] + [C] [D] + [M] [P] + 1 2 3 + + Then, both crates are moved from stack 2 to stack 1. Again, because crates are moved one + at a time, crate C ends up below crate M: + + [Z] + [N] + [M] [D] + [C] [P] + 1 2 3 + + Finally, one crate is moved from stack 1 to stack 2: + + [Z] + [N] + [D] + [C] [M] [P] + 1 2 3 + + The Elves just need to know which crate will end up on top of each stack; in this + example, the top crates are C in stack 1, M in stack 2, and Z in stack 3, so you should + combine these together and give the Elves the message CMZ. + + After the rearrangement procedure completes, what crate ends up on top of each stack? + + Your puzzle answer was PTWLTDSJV. + +--- Part Two --- + + As you watch the crane operator expertly rearrange the crates, you notice the process + isn't following your prediction. + + Some mud was covering the writing on the side of the crane, and you quickly wipe it away. + The crane isn't a CrateMover 9000 - it's a CrateMover 9001. + + The CrateMover 9001 is notable for many new and exciting features: air conditioning, + leather seats, an extra cup holder, and the ability to pick up and move multiple crates + at once. + + Again considering the example above, the crates begin in the same configuration: + + [D] + [N] [C] + [Z] [M] [P] + 1 2 3 + + Moving a single crate from stack 2 to stack 1 behaves the same as before: + + [D] + [N] [C] + [Z] [M] [P] + 1 2 3 + + However, the action of moving three crates from stack 1 to stack 3 means that those three + moved crates stay in the same order, resulting in this new configuration: + + [D] + [N] + [C] [Z] + [M] [P] + 1 2 3 + + Next, as both crates are moved from stack 2 to stack 1, they retain their order as well: + + [D] + [N] + [C] [Z] + [M] [P] + 1 2 3 + + Finally, a single crate is still moved from stack 1 to stack 2, but now it's crate C that + gets moved: + + [D] + [N] + [Z] + [M] [C] [P] + 1 2 3 + + In this example, the CrateMover 9001 has put the crates in a totally different order: + MCD. + + Before the rearrangement process finishes, update your simulation so that the Elves know + where they should stand to be ready to unload the final supplies. After the rearrangement + procedure completes, what crate ends up on top of each stack? + + Your puzzle answer was WZMFVGGZP. + + Both parts of this puzzle are complete! They provide two gold stars: ** + +References + + Visible links + . https://adventofcode.com/ + . https://adventofcode.com/2022/about + . https://adventofcode.com/2022/events + . 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://adventofcode.com/2022 + . https://adventofcode.com/2022/day/5/input diff --git a/2022/day05/testinput b/2022/day05/testinput new file mode 100644 index 0000000..42ef47f --- /dev/null +++ b/2022/day05/testinput @@ -0,0 +1,9 @@ + [D] +[N] [C] +[Z] [M] [P] + 1 2 3 + +move 1 from 2 to 1 +move 3 from 1 to 3 +move 2 from 2 to 1 +move 1 from 1 to 2 diff --git a/helpers/helpers.go b/helpers/helpers.go index ec8e9b7..00aef74 100644 --- a/helpers/helpers.go +++ b/helpers/helpers.go @@ -148,7 +148,7 @@ func Atoi(i string) int { var ret int var err error if ret, err = strconv.Atoi(i); err != nil { - log.Fatal("Invalid Atoi:", i) + log.Fatalf("Invalid Atoi: %s\n%v", i, err) } return ret }