Está en la página 1de 2

NOMBRE: PEREDO MANCILLA EDSON CARLOS MATERIA: SIS 2330 A FECHA: 26 / 04 / 13 SOLUCION EXAMEN PARCIAL 1.

Mostras en una lista los nmeros primos menores a n esprimo::Int->Int->Bool esprimo 1 p =True esprimo 2 p =True esprimo n 1 =True esprimo n p | (mod n p) == 0 = False |otherwise = esprimo n (p-1)

C.I.: 5774467 OR. ING. ROLY FERNANDEZ

lispri::Int->[Int] lispri 1=[] lispri 2=[1] lispri n |esprimo n (n/2) = n:(lispri (n-1)) |otherwise = lispri (n-1)

lista n = lispri (n-1) 2- Dada una lista de nmeros enteros retornar en una lista de listas los segmentos ordenados de la primera lista orde:: [Int]->[Int] orde []= [] orde [x]=[x] orde (x:xs) | x < (head xs) = x : orde xs |otherwise = [x]

orde1:: [Int] -> [[Int]] orde1 []= [] orde1 (xss)= orde xss : orde1 ( drop (length (orde xss)) xss) 3. Dada una lista de tuplas 2 que almacena un conjunto de puntos en el plano cartesiano, retornar la distancia total desde el primer punto hasta el ultimo punto

type Distancia = (Float,Float)

prim:: (a,b) -> a prim (x,y) = x

seg:: (a,b) -> b seg (x,y) = y

dist:: [Distancia]->[Float] dist [x] = [0.0] dist [] = [] dist (xs:xss) = sqrt( (( x2-x1)^2) + ((y2-y1)^2)) : dist xss where x2 = prim (head xss) x1 = prim xs y2 = seg (head xss) y1 = seg xs princ:: [Distancia] -> Float princ [] = 0 princ (xss) = sum ( dist xss)

También podría gustarte