Duvida Haskell, urgente please!

AVG

Membro
Ajudem-me que não sei o que está mal aqui.

fazer o maximo divisor comum de uma lista

código:


mdc :: Int-> Int -> Int
mdc _ 1 = 1
mdc 1 _ = 1
mdc x y
|x > y = mdc (x-y) y
|y > x = mdc (y-x) x
|x==y = x

mdcl :: [Int]-> [Int]
mdcl []=[]
mdcl l = mdcl ([mdc (tira(take 1 l)) (tira(take 1 (drop 1 l)))]++ drop 2 l)

gcdl :: [Int] -> Int
gcdl l = tira l

tira :: [Int] -> Int
tira []=0
tira [x]=x
 
Código:
mdcl :: [Int]-> [Int]
mdcl []=[]
mdcl [x]=[x]
mdcl l = mdcl ([mdc (tira(take 1 l)) (tira(take 1 (drop 1 l)))]++ drop 2 l)

EDIT: já agora, podes simplificar isso...

Código:
mdc :: Int -> Int -> Int
mdc _ 1 = 1
mdc 1 _ = 1
mdc x y |x > y = mdc (x-y) y
        |y > x = mdc (y-x) x
        |x==y = x

mdcl :: [Int] -> [Int]
mdcl []=[]
mdcl [x]=[x]
mdcl (x : y : s) = mdcl ([mdc x y] ++ s)
 
Última edição:
Back
Topo