package main import ( "bufio" "fmt" "os" "aoc2022/day05/common" ) func main() { stacks, movements := common.Parse(*bufio.NewScanner(os.Stdin)) for _, movement := range(movements) { topStack := common.Stack{} for i := 0; i < movement.GetN(); i++ { top, _ := stacks[movement.GetStart() - 1].Pop() topStack.Push(top) } for top, left := topStack.Pop(); left; top, left = topStack.Pop() { stacks[movement.GetEnd() - 1].Push(top) } } for _, stack := range(stacks) { fmt.Print(string(stack.Peek())) } fmt.Println() }