-
Notifications
You must be signed in to change notification settings - Fork 0
/
list-comprehension.hs
67 lines (28 loc) · 1.15 KB
/
list-comprehension.hs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
-- Aufgabe 2-3 --
--a) ungeraden Elemente einer Liste --
oddElements :: [Int] -> [Int]
oddElements xs = [x | x <- xs, x `mod` 2 /= 0]
--b) geraden Elemente einer Liste --
evenElements :: [Int] -> [Int]
evenElements xs = [x | x <- xs, x `mod` 2 == 0]
--c) Laenge einer Liste --
lenghtList :: [a] -> Int
lenghtList xs = sum [1 | _ <- xs]
--d) Liste mit n Leerzeichen --
noCharList :: Int -> [Char]
noCharList x = [' ' | _ <- [1..x]]
--e) natürlichen Zahlen zwischen 7 und 77 mit Rest 5 bei der Division durch 7 --
betweenWithFive :: [Int]
betweenWithFive = [x | x <- [7..77], x `mod` 7 == 5]
--f) dreifach --
dreifach :: Int -> Int
dreifach x = sum [x | _ <- [0..2]]
--g) nur Großbuchstaben ausgeben eines Strings --
nurGrossBuchstaben :: [Char] -> [Char]
nurGrossBuchstaben string = [x | x <- string, elem x ['A'..'Z']]
--h) Faktorzerlegung eines Integers --
faktoren :: Int -> [Int]
faktoren n = [x | x <- [2..n - 1], n `mod` x == 0]
--i) Pythagoras Trippel --
pytri :: Int -> [(Int, Int, Int)]
pytri n = [(a,b,c) | a <- [1..n], b <- [a..n], c <- [b..n], a*a + b*b == c*c]