Ik wil best uitleggen wat mijn stukje code doet. Ik denk echter dat je eerst de al ingeslagen weg moet volgen (dat is makkelijker).
Je moet eerst proberen helder te krijgen hoe je "op papier" in stappen het probleem zou oplossen.
Stel dat je de volgende string gegeven zou krijgen met een start positie 3 en een stapgrootte van 5. De string is "aeidoalsaele td mh !g". Begin door eerst eens een getal naast elke letter te zetten:
Code: Selecteer alles
00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20
a e i d o a l s a e l e t d m h ! g
Je moet beginnen bij 3, dus je zoekt 3 op:
Code: Selecteer alles
00 01 02>03<04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20
a e i d o a l s a e l e t d m h ! g
Dan kijk je welke letter hierbij hoort en die noteer je:
Code: Selecteer alles
00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20
a e i >d< o a l s a e l e t d m h ! g
output: "d"
Nu is de stapgrootte 5, dus je moet opzoek naar de volgende positie 3 + 5 = 8:
Code: Selecteer alles
00 01 02 03 04 05 06 07>08<09 10 11 12 13 14 15 16 17 18 19 20
a e i d o a l s a e l e t d m h ! g
output: "d"
wederom noteren welke letter hierbij hoort:
Nu is de stapgrootte 5, dus je moet opzoek naar de volgende positie 3 + 5 = 8:
Code: Selecteer alles
00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20
a e i d o a l s >a< e l e t d m h ! g
output: "da"
Volgende positie opzoeken (8 + 5 = 13), enz. Probeer dit proces eens verder zelf. Je zult dan zien dat je bij een bijzondere situatie uitkomt als positie hoger wordt dan de lengte van de string. Wat moet je dan doen?
Als je dit op papier kan dan kun je het daarna omzetten naar een programma. Als dat programma er is dan wil ik wel uitleggen wat mijn code doet.