Haskell - P3 Parcial 2019-11-04 P88451


Statement
 

pdf   zip

html
  1. Definim un arbre binari genèric així:

    Feu que els arbres genèrics siguins instàncies de la classe Show i s’escriguin a través del recorregut en inordre dels seus elements, seguint el format dels exemples.

  2. Feu que els arbres siguin instància de la classe Functor i implementeu una funció doubleT :: Num a => Tree a -> Tree a que dobli els valors dels nodes d’un arbre, tot utilitzant el functor d’arbres.
  3. Definim un bosc com una llista d’arbres binaris:

    Feu que els boscos d’arbres siguin instància de la classe Functor i implementeu una funció doubleF :: Num a => Forest a -> Forest a que dobli els valors dels nodes dels arbres d’un bosc, tot utilitzant el functor de boscos.

Observació

A l’hora de corregir es tindrà en compte la correcció, senzillesa, elegància i eficiència de la solució proposada.

Public test cases
  • Input

    Empty :: Tree Int
    Node 1 Empty Empty
    (Node 1 (Node 2 Empty Empty) Empty)
    (Node 2 Empty (Node 1 Empty Empty))
    (Node 1 (Node 2 Empty Empty) (Node 3 Empty Empty))
    (Node 1 (Node 2 Empty (Node 3 Empty Empty)) (Node 4 Empty Empty))
    

    Output

    ()
    ((),1,())
    (((),2,()),1,())
    ((),2,((),1,()))
    (((),2,()),1,((),3,()))
    (((),2,((),3,())),1,((),4,()))
    
  • Input

    doubleT $ Empty :: Tree Int
    doubleT $ Node 1 Empty Empty
    doubleT $ Node 1 (Node 2 Empty Empty) Empty
    doubleT $ Node 2 Empty (Node 1 Empty Empty)
    doubleT $ Node 1 (Node 2 Empty Empty) (Node 3 Empty Empty)
    doubleT $ Node 1 (Node 2 Empty (Node 3 Empty Empty)) (Node 4 Empty Empty)
    

    Output

    ()
    ((),2,())
    (((),4,()),2,())
    ((),4,((),2,()))
    (((),4,()),2,((),6,()))
    (((),4,((),6,())),2,((),8,()))
    
  • Input

    doubleF $ Forest []
    doubleF $ Forest [Empty, Node 1 Empty Empty, Node 1 (Node 2 Empty Empty) (Node 3 Empty Empty)]
    

    Output

    Forest []
    Forest [(),((),2,()),(((),4,()),2,((),6,()))]
    
  • Information
    Author
    Jordi Petit, Gerard Escudero
    Language
    Catalan
    Official solutions
    Haskell
    User solutions
    Haskell