The small crab challenges you to a game! The crab is going to mix up some cups, and you have to predict where they’ll end up.
The cups will be arranged in a circle and labeled clockwise (your puzzle input). For example, if your labeling were 32415
, there would be five cups in the circle; going clockwise around the circle from the first cup, the cups would be labeled 3
, 2
, 4
, 1
, 5
, and then back to 3
again.
Before the crab starts, it will designate the first cup in your list as the current cup. The crab is then going to do 100 moves.
Each move, the crab does the following actions:
For example, suppose your cup labeling were 389125467
. If the crab were to do merely 10 moves, the following changes would occur:
-- move 1 --
cups: (3) 8 9 1 2 5 4 6 7
pick up: 8, 9, 1
destination: 2
-- move 2 --
cups: 3 (2) 8 9 1 5 4 6 7
pick up: 8, 9, 1
destination: 7
-- move 3 --
cups: 3 2 (5) 4 6 7 8 9 1
pick up: 4, 6, 7
destination: 3
-- move 4 --
cups: 7 2 5 (8) 9 1 3 4 6
pick up: 9, 1, 3
destination: 7
-- move 5 --
cups: 3 2 5 8 (4) 6 7 9 1
pick up: 6, 7, 9
destination: 3
-- move 6 --
cups: 9 2 5 8 4 (1) 3 6 7
pick up: 3, 6, 7
destination: 9
-- move 7 --
cups: 7 2 5 8 4 1 (9) 3 6
pick up: 3, 6, 7
destination: 8
-- move 8 --
cups: 8 3 6 7 4 1 9 (2) 5
pick up: 5, 8, 3
destination: 1
-- move 9 --
cups: 7 4 1 5 8 3 9 2 (6)
pick up: 7, 4, 1
destination: 5
-- move 10 --
cups: (5) 7 4 1 8 3 9 2 6
pick up: 7, 4, 1
destination: 3
-- final --
cups: 5 (8) 3 7 4 1 9 2 6
In the above example, the cups’ values are the labels as they appear moving clockwise around the circle; the current cup is marked with ( )
.
After the crab is done, what order will the cups be in? Starting after the cup labeled 1
, collect the other cups’ labels clockwise into a single string with no extra characters; each number except 1
should appear exactly once. In the above example, after 10 moves, the cups clockwise from 1 are labeled 9
, 2
, 6
, 5
, and so on, producing 92658374
. If the crab were to complete all 100 moves, the order after cup 1
would be 67384529
.
Using your labeling, simulate \(n\) moves. What are the labels on the cups after cup 1
? Determine this in the following way:
labels
that takes two arguments: i) the labels (Int
) on the cups at the start of the game and ii) a number \(n \in \mathbb{N}\) (Int
). The function must the labels (Int
) on the cups after cup 1
, after the crab has done \(n\) moves.> labels 389125467 1
54673289
> labels 389125467 2
32546789
> labels 389125467 3
34672589
> labels 389125467 4
32584679
> labels 389125467 5
36792584
> labels 389125467 6
93672584
> labels 389125467 7
92583674
> labels 389125467 8
58392674
> labels 389125467 9
83926574
> labels 389125467 10
92658374
> labels 389125467 100
67384529