B
Beni
Gast
Hallo zusammen
Erstmals das Problem
Es gibt die Klassen Leaf und Kontrollpunkt (eigentlich 3 dimensionale Punkte)
Jedes Leaf besitzt 9 Kontrollpunkte (und die Kontrollpunkte wissen wiederum, von wem sie besessen sind).
Leafs können benachbart sein, in diesem Fall besitzen mehrere Leafs dieselbe Referenz eines Kontrollpunktes.
Nun bekomme ich von irgendwoher eine Enumeration von Leafs. Aus dieser Enumeration muss ich eine Enumeration von Kontrollpunkten bauen.
Der naive Ansatz, einfach für jedes Leaf seine 9 Kontrollpunkte auszugeben funktioniert nicht, da dann einige Kontrollpunkte mehrfach ausgegeben würden (das Problem kommt von den benachbarten Leafs).
Mein Lösungsansatz
Es wird eine Liste (nach dem Schema des *Move-To-Front) geführt, welche Kontrollpunkte schon ausgegeben wurde.
Bevor also ein Kontrollpunkt zurückgegeben wird, wird in der Liste nachgeguckt, ob der schoneinmal da war.
*Ich geh davon aus, dass Leafs die "räumlich" nahe beieinander liegen auch nahe in der Enumeration sind.
Ach ja: direkt in den Kontrollpunkten möchte ich nichts speichern. Es könnten ja mehrere (sogar unsynchonisierte) Enumerations geben (und auch solche, die nie fertig benutzt werden, und als Speicherleichen herumliegen würden).
Die Frage
Das ist irgendwie nicht das Gelbe vom Ei... Die Liste ist so lange wie die gesammte Anzahl Kontrollpunkte, eigentlich ein gigantischer Overhead.
Gibts da eine praktischere Lösung?
mfg Beni
Erstmals das Problem
Es gibt die Klassen Leaf und Kontrollpunkt (eigentlich 3 dimensionale Punkte)
Jedes Leaf besitzt 9 Kontrollpunkte (und die Kontrollpunkte wissen wiederum, von wem sie besessen sind).
Leafs können benachbart sein, in diesem Fall besitzen mehrere Leafs dieselbe Referenz eines Kontrollpunktes.
Nun bekomme ich von irgendwoher eine Enumeration von Leafs. Aus dieser Enumeration muss ich eine Enumeration von Kontrollpunkten bauen.
Der naive Ansatz, einfach für jedes Leaf seine 9 Kontrollpunkte auszugeben funktioniert nicht, da dann einige Kontrollpunkte mehrfach ausgegeben würden (das Problem kommt von den benachbarten Leafs).
Mein Lösungsansatz
Es wird eine Liste (nach dem Schema des *Move-To-Front) geführt, welche Kontrollpunkte schon ausgegeben wurde.
Bevor also ein Kontrollpunkt zurückgegeben wird, wird in der Liste nachgeguckt, ob der schoneinmal da war.
*Ich geh davon aus, dass Leafs die "räumlich" nahe beieinander liegen auch nahe in der Enumeration sind.
Ach ja: direkt in den Kontrollpunkten möchte ich nichts speichern. Es könnten ja mehrere (sogar unsynchonisierte) Enumerations geben (und auch solche, die nie fertig benutzt werden, und als Speicherleichen herumliegen würden).
Die Frage
Das ist irgendwie nicht das Gelbe vom Ei... Die Liste ist so lange wie die gesammte Anzahl Kontrollpunkte, eigentlich ein gigantischer Overhead.
Gibts da eine praktischere Lösung?
mfg Beni