@@ -29,12 +29,22 @@ func main() {
29
29
}
30
30
defer file .Close ()
31
31
32
- p1 , err := RearrangeCreates (file )
32
+ p1 , err := RearrangeCreates (file , CrateMover9000 )
33
33
if err != nil {
34
34
log .Fatal (err )
35
35
}
36
36
37
37
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 ("\n Part 2: %s\n " , strings .Join (p2 , "" ))
38
48
}
39
49
40
50
@@ -44,7 +54,13 @@ func ReverseSlice[T comparable](s []T) {
44
54
})
45
55
}
46
56
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 ) {
48
64
var stackingCrates = true
49
65
var crateStack [][]string
50
66
@@ -82,7 +98,10 @@ func RearrangeCreates(in io.Reader) (topCrates []string, err error) {
82
98
fmt .Printf ("n: %d, fromStack: %d, toStack: %d \n " , n , fromStack , toStack )
83
99
84
100
crates := crateStack [fromStack ][len (crateStack [fromStack ])- n :]
85
- ReverseSlice (crates )
101
+
102
+ if crateMover == CrateMover9000 {
103
+ ReverseSlice (crates )
104
+ }
86
105
87
106
// add crates to new stack
88
107
crateStack [toStack ] = append (crateStack [toStack ], crates ... )
0 commit comments