Resolución 2º Parcial Matemática I Profesorado de Informática 9/11/2013 Lo que sigue no es “La Resolución”. Es sólo una resolución. module SegundoParcial2013 where import Naturales -- ejercicio 1 rota:: Integer->[a]->[a] rota 0 (a) = (a) rota n [ ] = [ ] rota n (a:xs) = rota (n-1) ((xs)++[a]) -- ejercicio 2 compactar:: [a]->[b]->[(a,b)] compactar (a) [ ] = [ ] compactar [ ] (a) = [ ] compactar (a:xs) (b:ys) = (a,b):compactar (xs) (ys) -- ejercicio 3)b) diferencia a Z = a diferencia Z a = a diferencia (S a) (S b) = diferencia a b -- ejercicio 4: ver el cuaderno de clase -- ejercicio 5 listaprimos:: Integer-> Integer -> [Integer] listaprimos a b = [ x | x <- [a..b] , esprimo x] esprimo::Integer -> Bool esprimo a = largo (divisores a ) ==2 divisores:: Integer -> [Integer] divisores a = [ x | x <- [1..a], mod a x ==0] largo:: [Integer]->Integer largo [ ] = 0 largo (a:xs)=1+largo (xs) -- ejercicio 6 data Arbol a = Vacio | Nodo a (Arbol a) (Arbol a) deriving Show sumatodo:: Arbol Integer -> Integer sumatodo Vacio = 0 sumatodo (Nodo a (izq) (der)) = a + sumatodo (izq) + sumatodo (der) Las funciones fueron probadas: SegundoParcial2013> rota 1 "pensar" "ensarp" SegundoParcial2013> rota 3 "pensar" "sarpen" SegundoParcial2013> rota 100 "pensar" (esto está ”lindo” para el próximo parcial !!!!) "arpens" SegundoParcial2013> compactar [1,2,3,4] "Piriapolis" [(1,'P'),(2,'i'),(3,'r'),(4,'i')] SegundoParcial2013> listaprimos 10 20 [11,13,17,19] SegundoParcial2013> listaprimos 100 108 [101,103,107] SegundoParcial2013> sumatodo( Nodo 4 (Nodo 3 Vacio Vacio) (Nodo 7 Vacio Vacio) ) 14 SegundoParcial2013>