Absender: Timo Sandmann
Datum: Mi, 18.02.2009 14:29:01
In-reply-to:
<096FD558C4D20046A1BABE72DFF0C6C339FF5CC653@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>
References:
<000401c99051$8bf68730$0200a8c0@mexpnew> <B1CBD00B-1122-401F-844B-69A0901C3536@xxxxxxxxxxxxxxx> <096FD558C4D20046A1BABE72DFF0C6C339FF5CC653@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>
Hi Frank, Am 18.02.2009 um 12:32 schrieb Menzel, Frank IT-OO4:
Prinzipiell schon, habe aber das Problem, dass ich da irgendwie einen Zähler mitgeben möchte. Der Sinn ist der, dass wenn eine Strecke aktuell nicht anfahrbar ist, diese nicht verworfen sondern mit erhöhtem Zählerwert vorn reingeschoben wird. Erst nach x- Versuchen (z.B. Zähler der Strecke > 5) des Anfahrens wird diese Strecke verworfen.
so ganz habe ich noch nicht verstanden, was du meinst. Wenn eine Strecke nicht anfahrbar ist, setzt du einen Zähler für die Strecke auf 1 und packst sie vorne in den Stack. Jetzt geht es mit der letzten Strecke aus dem Stack weiter. Irgendwann sind dann alle Strecke aus dem Stack mit pop() geholt worden und es ist nur noch die "Zurückgestellte" mit dem Zähler == 1 dort drin. Jetzt wird diese geholt und beim Auslesen merkst du, dass der Zähler auf 1 steht. Jetzt ist die Strecke immer noch nicht anfahrbar und du erhöhst den Zähler auf 2, anschließend kommt die Strecke wieder vorne in den (jetzt leeren) Stack. Und nun?
Verstehe ich das soweit erstmal richtig?
Ohne Zähler ist ja nicht bekannt, wie oft ich diese Strecke schon versucht habe anzufahren und würde Endlosschleife mit sich bringen...Wie kann hier am besten ein Zähler mit rein?
Man braucht ja einen Zähler pro Strecke, also für jeden zweiten Stack- Eintrag, richtig? Entweder bekommt jeder Stack-Eintrag ein Byte mehr, wo du beliebige Werte von 0 bis 255 speichern kannst, dann hätten wir 25 % mehr RAM-Verbrauch für jeden Stack. Oder der Stack bzw. Speicher kann unterschiedliche Datentypen speichern, Positionen (x und y), Strecken (x1, y1, x2, y2) und Strecken mit Zähler (x1, y1, x2, y2, z). Dann hätte der Stack für das Area-Verhalten zwar immer noch zusätzlich 1 Byte pro Strecke belegt (+ 12,5 % RAM), egal ob der Eintrag nun einen Zähler braucht oder nicht, alle anderen Stacks der anderen Verhalten würden aber keinen Speicherplatz verschwenden. Alternativ dazu: Das Verhalten macht selbst eine Liste auf und speichert zu interessanten Positionen des Stacks (Index im Stack- Array) einen Zähler.
Gruß, Timo