www.jammni.de

Logo - Kleiner Drache
Login
Username:

Passwort:

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

Logo - DracheHaskell-Forum

howlingmonkey

Gepostet:
24.05.2006 23:34

polymorpher n-ärer Baum  
Hallo!
Habe folgende Aufgabe:

Muss mit diesem Datentyp:

data NBaum a = Blatt a | Knoten a [NBaum a]
deriving (Show)


einen Baum angeben. Da ich eigentlich noch nicht viel mit Haskell programmiert hab, weiß ich nicht so recht, wie ich da rangehen soll. Vielleicht kann mir jemand nen Tipp geben.
Zum Seitenanfang    
 
Jacke

Gepostet:
25.05.2006 00:17

   


data NBaum a = Blatt a | Knoten a [NBaum a] deriving (Show)

smallbaum= Knoten 41 [(Knoten 1 [(Blatt 12),(Blatt 14)]),Knoten 2 [(Blatt 2),(Blatt 4)]]
smallerbaum=Blatt 1


ich hoffe das hilft dir weiter...du mußt dich eigentlich nur an das data halten...nen NBaum ist entweder nen Knoten oder ein Blatt...nach Knoten kommt ein wert und danach ne liste von Bäumen(z.b. ne liste von knoten...oder ne liste von blättern)
gruß jacke
Zum Seitenanfang    
 
enida

Gepostet:
30.05.2006 08:35

   
so....
ganz ähnliches Problem!!!

und zwar brauch ich eine Funktion die auf den Baum eine andere Funktion anwendet.... hoffe ihr wisst was ich mein

die Funktion sollt einen der typen haben:

(a->a) -> NBaum a -> NBaum a

(oder vielleicht auch ...)

(a->b) -> NBaum a -> NBaum b
Zum Seitenanfang    
 
Jacke

Gepostet:
30.05.2006 10:04

   
data NBaum a = Blatt a | Knoten a [NBaum a] deriving (Show)


smallbaum= Knoten 41 [(Knoten 1 [(Blatt 12),(Blatt 14)]),Knoten 2 [(Blatt 2),(Blatt 4)]]


ersetze k k2 []=[]
ersetze k k2 (b:baum) = (ersetze2 k k2 b):(ersetze k k2 baum)


ersetze2 k k2 (Knoten (x) (b:baum))
| (x==k) = Knoten (k2) ( (ersetze2 k k2 b):(ersetze k k2 baum))
| otherwise = Knoten (x) ( (ersetze2 k k2 b):(ersetze k k2 baum))
ersetze2 k k2 (Blatt x)
|(x==k) = (Blatt (k2))
|otherwise = (Blatt (x))


man ruft es dann so auf
ersetze2 2 3 smallbaum
dann werden alle zweien durch dreien ersetzt

ich hoffe ich hab die frage jetzt richtig verstanden^^

gruß jacke
Zum Seitenanfang    
 
Jacke

Gepostet:
30.05.2006 10:28

   

data NBaum a = Blatt a | Knoten a [NBaum a] deriving (Show)
smallbaum= Knoten 41 [(Knoten 1 [(Blatt 12),(Blatt 14)]),Knoten 2 [(Blatt 2),(Blatt 4)]]

mul2 x=x*2
zeug (funk) (Blatt x)=Blatt (funk x)
zeug (funk) (Knoten (x) (b:baum)) =Knoten (funk x) ((zeug (funk) b):(help (funk) (baum)))
help (funk) []=[]
help (funk) (b:baum) = (zeug (funk) b):(help (funk) baum)


ich hab nochmal drüber nachgedacht ich denke du wolltest wohl doch eher das hier ^^

aufruf mit
zeug mul2 smallbaum
Zum Seitenanfang    
 
enida

Gepostet:
30.05.2006 12:55

   
Hey DANKE!!!

Du bist echt supi u hast mir voll geholfen!!!

also thx Smilie
Zum Seitenanfang    
 
howlingmonkey

Gepostet:
30.05.2006 13:19

   
Von mir auch ganz lieben Dank!Smilie
Zum Seitenanfang    
 
Jacke

Gepostet:
30.05.2006 14:41

   
Smilie
Zum Seitenanfang