www.jammni.de

Logo - Kleiner Drache
Login
Username:

Passwort:

Daten merken
Auto-Login
Registrieren
 
Online
niemand
 
Forumsuche
Suche nach:

Logo - DracheHaskell-Forum

Haskell-Neuling

Gepostet:
19.11.2008 18:53

Bäume in Haskell  
Hallo, also ich als Neuling hätte da mal ne Frage. Ich versuche zur Zeit in Haskell Bäume zu programmieren, hab dabei aber n paar Probleme.
Hier ein Beispiel, an dem ich gerade arbeite.
Ich hab n Quadrat, dass wieder in Quadrate unterteilt ist und hab das erstmal so definiert:
data VTree =
S |
W |
V VTree VTree VTree VTree

S ist ein Quadrat, dass nur aus schwarzen Bildpunkten besteht.
W ist ein Quadrat, dass nur aus weißen Bildpunkten besteht.
V ist einer der Quadranten, die in vier weitere aufgeteilt wird.

Dabei will ich im Urzeigersin vorgehen, Bsp.:
V (V S W S W) W (V W W S S) S
sieht dann so als Bild aus:
*[] | [][]
[]* | [][]
---------
** | [][]
** | **

* = schwarzes Feld
[] = weißes Feld

Jetzt will ich ne Funktion vToBmp :: VTree->Int->Bitmap implementieren, wobei vToBmp t s den Viererbaum t in ne quadratische Bitmap umwandelt mit der Kantenlänge s.
Anmerkung: s ist immer eine Zweierpotenz -> groß genug um in jedem t gespeicherte Bildpunkte durch mind. 1 Punkt in der Bitmap darzustellen. Dabei ist die Wurzel des Viererbaums ein Quadrat mit der Kantenlänge s x s.

Hat da wer ne Idee, oder ne ( wenns geht für nen Neuling verständliche ) Antwort/Lösung?

Thx in Advantage!

MfG "Der Neuling"
Zum Seitenanfang    
 
Siracusa

Gepostet:
20.11.2008 00:40

   
Hallo,

du könntest dir zunächst zwei Hilfsfunktionen schreiben, die jeweils zwei Bitmaps erhalten und diese einmal horizontal und einmal vertikal zusammenfügen. Dann brauchst du nur die vier (rekursiv in Bitmaps) umgewandelten Baumteile in der richtigen Kombination mit den beiden Funktionen zu einer neuen Bitmap verbinden. Für die Fälle W und S kannst du dir eine weitere Hilfsfunktion schreiben, die dir ein quadratisches Bitmap der Größe s x s erzeugt, das nur weiße oder schwarze Punkte hat (am besten mit List Comprehensions).


Viele Grüße,

Siracusa
Zum Seitenanfang