Skip to content

Commit e737ad7

Browse files
committed
day 5 part 2
1 parent 0b2f3f5 commit e737ad7

File tree

1 file changed

+22
-3
lines changed

1 file changed

+22
-3
lines changed

day05/main.go

+22-3
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,22 @@ func main() {
2929
}
3030
defer file.Close()
3131

32-
p1, err := RearrangeCreates(file)
32+
p1, err := RearrangeCreates(file, CrateMover9000)
3333
if err != nil {
3434
log.Fatal(err)
3535
}
3636

3737
fmt.Printf("Part 1: %s\n", strings.Join(p1, ""))
38+
39+
fmt.Println()
40+
41+
file.Seek(0, io.SeekStart)
42+
p2, err := RearrangeCreates(file, CrateMover9001)
43+
if err != nil {
44+
log.Fatal(err)
45+
}
46+
47+
fmt.Printf("\nPart 2: %s\n", strings.Join(p2, ""))
3848
}
3949

4050

@@ -44,7 +54,13 @@ func ReverseSlice[T comparable](s []T) {
4454
})
4555
}
4656

47-
func RearrangeCreates(in io.Reader) (topCrates []string, err error) {
57+
type CrateMover int
58+
const (
59+
CrateMover9000 CrateMover = iota
60+
CrateMover9001
61+
)
62+
63+
func RearrangeCreates(in io.Reader, crateMover CrateMover) (topCrates []string, err error) {
4864
var stackingCrates = true
4965
var crateStack [][]string
5066

@@ -82,7 +98,10 @@ func RearrangeCreates(in io.Reader) (topCrates []string, err error) {
8298
fmt.Printf("n: %d, fromStack: %d, toStack: %d \n", n, fromStack, toStack)
8399

84100
crates := crateStack[fromStack][len(crateStack[fromStack])-n:]
85-
ReverseSlice(crates)
101+
102+
if crateMover == CrateMover9000 {
103+
ReverseSlice(crates)
104+
}
86105

87106
// add crates to new stack
88107
crateStack[toStack] = append(crateStack[toStack], crates...)

0 commit comments

Comments
 (0)