Una resolución 2ºparcial 2013

Anuncio
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>
Descargar