Vandaag wordt je zelf voor een spelletje uitgedaagd door de kleine krab! De krab gaat wat bekers door elkaar halen en je moet voorspellen waar ze terecht zullen komen.
De bekers worden in een cirkel gezet en met de klok mee genummerd (de invoer van deze opdracht). Als de nummering bijvoorbeeld 32415
is, dan zouden er vijf bekers in de cirkel staan. Met de klok en vanaf de eerste beker, zouden de bekers de nummers 3
, 2
, 4
, 1
en 5
hebben. Daarna volgt terug de beker met nummer 3
.
Voor de krab start, wijst hij de eerste beker in de reeks aan als de huidige beker. De krab gaat dan 100 zetten doen.
Bij elke zet voert de krab de volgende acties uit:
Stel bijvoorbeeld dat 389125467
de nummering van je bekers was. Als de krab slechts 10 zetten zou doen, dan zouden de volgende wijzigingen optreden:
-- zet 1 --
bekers: (3) 8 9 1 2 5 4 6 7
wegnemen: 8, 9, 1
bestemming: 2
-- zet 2 --
bekers: 3 (2) 8 9 1 5 4 6 7
wegnemen: 8, 9, 1
bestemming: 7
-- zet 3 --
bekers: 3 2 (5) 4 6 7 8 9 1
wegnemen: 4, 6, 7
bestemming: 3
-- zet 4 --
bekers: 7 2 5 (8) 9 1 3 4 6
wegnemen: 9, 1, 3
bestemming: 7
-- zet 5 --
bekers: 3 2 5 8 (4) 6 7 9 1
wegnemen: 6, 7, 9
bestemming: 3
-- zet 6 --
bekers: 9 2 5 8 4 (1) 3 6 7
wegnemen: 3, 6, 7
bestemming: 9
-- zet 7 --
bekers: 7 2 5 8 4 1 (9) 3 6
wegnemen: 3, 6, 7
bestemming: 8
-- zet 8 --
bekers: 8 3 6 7 4 1 9 (2) 5
wegnemen: 5, 8, 3
bestemming: 1
-- zet 9 --
bekers: 7 4 1 5 8 3 9 2 (6)
wegnemen: 7, 4, 1
bestemming: 5
-- zet 10 --
bekers: (5) 7 4 1 8 3 9 2 6
wegnemen: 7, 4, 1
bestemming: 3
-- finaal --
bekers: 5 (8) 3 7 4 1 9 2 6
In bovenstaand voorbeeld zijn de waarden van de bekers die nummers zoals ze in wijzerzin rond de cirkel kunnen afgelezen worden. De huidige beker is aangeduid met ( )
.
In welke volgorde staan de bekers, nadat de krab klaar is? Begin na de beker met nummer 1
, loop de nummers op de andere bekers in wijzerzin af en zet ze in één enkele reeks achter elkaar zonder extra scheidingstekens. Elk nummer behalve 1
moet juist één keer voorkomen. In bovenstaand voorbeeld zijn de bekers na tien zetten in wijzerzin vanaf 1
genummerd met 9
, 2
, 6
, 5
, enzoverder, waardoor we 92658374
krijgen. Als de krab all 100 zetten zou gedaan hebben, dan zouden de bekers vanaf beker 1
in de volgorde 67384529
staan.
Simuleer \(n\) zetten voor een gegeven nummering van de bekers. Wat zijn de nummers op de bekers die je uitleest vanaf beker 1
? Hiervoor ga je als volgt te werk:
labels
waaraan twee argumenten moeten doorgegeven worden: i) de nummers (Int
) op de bekers bij het begin van het spelletje en ii) een getal \(n \in \mathbb{N}\) (Int
). De functie moet de nummers (Int
) op de bekers vanaf beker 1
teruggeven, nadat de krab \(n\) zetten gedaan heeft.> 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