Declaratieve Talen/Oplossing Min-max: verschil tussen versies
Naar navigatie springen
Naar zoeken springen
Geen bewerkingssamenvatting |
k Dtopl5 moved to Declaratieve Talen/Oplossing Min-max: correcte naamgeving |
(geen verschil)
|
Versie van 16 jun 2006 19:25
Een oplossing:
Probeer met volgend commando om bovenstaand voorbeeld te laten berekenen:
Main> berekenDoosboom (Doos 0 [Bol 1 [Doos 2 [] 1, Doos 3 [] 2] 2, Bol 4 [Doos 5 [] 3, Doos 6 [] 4] 0, Bol 7 [Doos 8 [] 5, Doos 9 [] 6] 0] 0) Doos 0 [Bol 1 [Doos 2 [] 1,Doos 3 [] 2] 1,Bol 4 [Doos 5 [] 3,Doos 6 [] 4] 3,Bol 7 [Doos 8 [] 5,Doos 9 [] 6] 5] 5
import List data Doosboom = Doos Int [Bolboom] Int deriving Show data Bolboom = Bol Int [Doosboom] Int deriving Show getWaardeBol :: Bolboom -> Int getWaardeBol (Bol id [] w) = w getWaardeBol (Bol id doosbomen w) = let (eerste:rest) = sort [getWaardeDoos d | d <- doosbomen] in eerste getWaardeDoos :: Doosboom -> Int getWaardeDoos (Doos id [] w) = w getWaardeDoos (Doos id bolbomen w) = let (eerste:rest) = reverse (sort [getWaardeBol b | b <- bolbomen]) in eerste berekenDoosboom :: Doosboom -> Doosboom berekenDoosboom (Doos id bomen w) = Doos id [(berekenBolboom b) | b <- bomen] (getWaardeDoos (Doos id bomen w)) berekenBolboom :: Bolboom -> Bolboom berekenBolboom (Bol id bomen w) = Bol id [(berekenDoosboom d) | d <- bomen] (getWaardeBol (Bol id bomen w))