2.1) sum2 [] = [] sum2 [a] = [] sum2 (a:b:bs) = a+b : sum2(b:bs) 2.2) longestseq xs = longest (seqs xs) longest [] = [] longest (x:xs) = f x xs where f x [] = x f x (a:as) | length x >= length a = f x as | otherwise = f a as seqs [] = [] seqs xs = z : drop (length z) xs where z = oneasseq xs oneasseq [] = [] oneasseq [a] = [a] oneasseq (a:b:bs) | a <= b = a:oneasseq (b:bs) | otherwise = [a] 3.1) dir a xs = [y | (x,y) <- xs, x == a] 3.2) indir xs a = dirsa ++ concat (map (indir xs) dirsa) where dirsa = dir a xs 3.3) indircicl xs a = indirc [] xs a indirc acc xs a = dirsa ++ concat (map (indirc (acc ++ dirsa) xs) dirsa) where dirsa = (dir a xs)\\acc 5) merge [] xs = xs merge xs [] = xs merge (x:xs) (y:ys) | x == y = x+y : merge xs ys | x < y = x:merge xs (y:ys) | x > y = y:merge (x:xs) ys 6) f find list | length zs >= 1 = True | otherwise = False where zs = filter (==find) ys ys = splitin (length find) list splitin n [] = [] splitin n xs = take n xs : splitin n (tail xs)