Relativen Index beim mehrfachen Durchlaufen einer verschobenen Liste berechnen

Neue Frage »

goodmanpersonguy Auf diesen Beitrag antworten »
Relativen Index beim mehrfachen Durchlaufen einer verschobenen Liste berechnen
Hallo zusammen,
ich habe eine Liste mit n Einträgen, beispielhaft nehme ich 6 Einträge. Diese stehen absteigend untereinander.

Nun gibt es noch einen Marker, den man auf einen beliebigen Eintrag legen kann, ich nehme mal den Eintrag 3.

Es folgen jetzt m Durchläufe, probeweise arbeite ich mit 10, sonst schreibe ich mich auf dem Papier tot.

Pro Durchlauf:

- verschiebt sich der Markier um einen Eintrag nach "oben"
- der Marker erreicht nie ein Ende, weil zeitgleich der unterste Eintrag wieder oben drangehangen wird. Diese Liste bewegt sich also quasi mit.

Ich stelle mir das ein bisschen wie ein dreidimensionales Rad vor, das sich vorwärts bewegt.

Ich würde also anfangen mit den Einträgen

- Eintrag 6
- Eintrag 5
- Eintrag 4
- Eintrag 3 => Marker liegt hier
- Eintrag 2
- Eintrag 1

Nach dem ersten Durchlauf sähe die Liste wie folgt aus

- Eintrag 1
- Eintrag 6
- Eintrag 5
- Eintrag 4 => Marker liegt hier
- Eintrag 3
- Eintrag 2

nach dem zweiten Durchlauf so

- Eintrag 2
- Eintrag 1
- Eintrag 6
- Eintrag 5 => Marker liegt hier
- Eintrag 4
- Eintrag 3

Ich möchte bei jedem Durchlauf sagen können, welcher Eintrag momentan ganz unten, ganz oben, als zweites und als vorletztes auf der Liste steht.

Dinge, die ich mir herleiten konnte:

- Wenn der Marker an der Position 3 begonnen hat und jetzt an der Position x ist, weiß ich, beim wievielten Durchlauf ich bin, wenn ich rechne

Aktuelle Iteration = Aktuelle Stelle des Markers - Beginn des Markers

- Der Marker zeigt auf einen Eintrag. Ist die aktuelle Position des Markers kleiner, als die Anzahl der Einträge, so ist die Nummer des Eintrags gleich der Position des Markers. Ist die Position größer als die Anzahl der Einträge, so muss ich die Position durch die Anzahl teilen und der Rest der Division ist die Stelle.

- Der vorletzte Eintrag ganz unten müsste immer

Vorletzter Eintrag Unten = Letzter Eintrag + 1

sein. Ist dieser Wert größer als die Anzahl der Einträge, so ist der Eintrag

Vorletzter Eintrag Unten = Letzter Eintrag Unten + 1 - Anzahl der Einträge

- Der vorletzte Eintrag ganz oben müsste immer sein

Vorletzter Eintrag Oben = Oberster Eintrag - 1

sein. Ist dieser Wert kleiner als 1, so ist der Eintrag

Vorletzter Eintrag Oben = Oberster Eintrag - 1 + Anzahl der Einträge

Nun weiß ich aber leider gar nicht, ob mir diese Informationen überhaupt etwas bringen. Um die letzten beiden Werte zu berechnen, muss ich wahrscheinlich (so stelle ich es mir vor) zwei Formeln für ein "Replay" aufstellen, also auf Basis der initialen Markerstelle und der Anzahl der Durchläufe. Vielleicht reicht auch schon eine Formel aus und das andere berechnet sich dann wieder von selbst ....

Leider habe ich dafür überhaupt keine Ahnung und bräuchte Hilfe. Vielen Dank schon einmal smile
goodmanpersonguy Auf diesen Beitrag antworten »

Nachtrag:

Der letzte Eintrag ganz oben müsste sich immer wie folgt berechnen

Letzter Eintrag Oben = Letzter Eintrag Unten - 1

sein. Ist dieser Wert kleiner als 1, so ist der Eintrag

Letzter Eintrag Oben = Letzter Eintrag Unten - 1 + Anzahl der Einträge

Jetzt würde also nur noch die Berechnung des letzten Eintrages unten fehlen smile
HAL 9000 Auf diesen Beitrag antworten »

Zitat:
Original von goodmanpersonguy
Pro Durchlauf:

- verschiebt sich der Markier um einen Eintrag nach "oben"
- der Marker erreicht nie ein Ende, weil zeitgleich der unterste Eintrag wieder oben drangehangen wird. Diese Liste bewegt sich also quasi mit.

Nach der Beschreibung ist die Position des Markers am Ende des Durchlaufs dieselbe wie am Anfang, d.h., nur die Liste bewegt sich (genauer gesagt: sie rotiert), aber nicht der Marker!

Wenn wir die Listenelemente mit indizieren, zum Start seien das die Werte , dann erfüllen die nach genau Durchläufen da stehenden Werte die Beziehung

für

Insbesondere heißt das für ganzzahlige Vielfache von (d.h. mit ganzzahligem ) dann schlicht , also die Ausgangskonfiguration - klar, wenn man -mal durchrotiert, ist man wieder bei der Anfangsstellung.

Deine Beispieldaten betreffen den Fall mit den Startwerten , die Markerposition ist nach jedem Durchlauf immer dieselbe an Indexposition 3 deiner Liste (wie gesagt, ich fange bei Position 0 an).


Soweit, so unspannend, aber was ist nun dein eigentliches Anliegen?
Neue Frage »
Antworten »



Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »