Improve day 5
This commit is contained in:
@@ -16,11 +16,15 @@ func (stack *Stack) Push(crate byte) {
|
|||||||
*stack = append(*stack, crate)
|
*stack = append(*stack, crate)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (stack *Stack) Pop() byte {
|
func (stack *Stack) Pop() (byte, bool) {
|
||||||
last := len(*stack) - 1
|
last := len(*stack) - 1
|
||||||
top := (*stack)[last]
|
if last >= 0 {
|
||||||
*stack = (*stack)[:last]
|
top := (*stack)[last]
|
||||||
return top
|
*stack = (*stack)[:last]
|
||||||
|
return top, true
|
||||||
|
} else {
|
||||||
|
return 0, false
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (stack *Stack) Peek() byte {
|
func (stack *Stack) Peek() byte {
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ func main() {
|
|||||||
|
|
||||||
for _, movement := range(movements) {
|
for _, movement := range(movements) {
|
||||||
for i := 0; i < movement.GetN(); i++ {
|
for i := 0; i < movement.GetN(); i++ {
|
||||||
top := stacks[movement.GetStart() - 1].Pop()
|
top, _ := stacks[movement.GetStart() - 1].Pop()
|
||||||
stacks[movement.GetEnd() - 1].Push(top)
|
stacks[movement.GetEnd() - 1].Push(top)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,12 +11,13 @@ func main() {
|
|||||||
stacks, movements := common.Parse(*bufio.NewScanner(os.Stdin))
|
stacks, movements := common.Parse(*bufio.NewScanner(os.Stdin))
|
||||||
|
|
||||||
for _, movement := range(movements) {
|
for _, movement := range(movements) {
|
||||||
top := []byte{}
|
topStack := common.Stack{}
|
||||||
for i := 0; i < movement.GetN(); i++ {
|
for i := 0; i < movement.GetN(); i++ {
|
||||||
top = append(top, stacks[movement.GetStart() - 1].Pop())
|
top, _ := stacks[movement.GetStart() - 1].Pop()
|
||||||
|
topStack.Push(top)
|
||||||
}
|
}
|
||||||
for i := len(top) - 1; i >= 0; i-- {
|
for top, left := topStack.Pop(); left; top, left = topStack.Pop() {
|
||||||
stacks[movement.GetEnd() - 1].Push(top[i])
|
stacks[movement.GetEnd() - 1].Push(top)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user