annotate exercises/src/Exercise_1.hs @ 4:e02058a1afbd

week 1 homework
author Markus Kaiser <markus.kaiser@in.tum.de>
date Sun, 28 Oct 2012 15:31:36 +0100
parents e532198d58f4
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
1 module Exercise_1 where
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
2 import Test.QuickCheck
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
3
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
4 {---------------------------------------------------------------------}
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
5 {- G1.1 -}
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
6 threeDifferent :: Integer -> Integer -> Integer -> Bool
1
e532198d58f4 week 1 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 0
diff changeset
7 threeDifferent x y z = (x /= y) && (y /= z) && (z /= x)
e532198d58f4 week 1 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 0
diff changeset
8
0
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
9
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
10 fourEqual :: Integer -> Integer -> Integer -> Integer -> Bool
1
e532198d58f4 week 1 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 0
diff changeset
11 fourEqual w x y z = (w == x) && (x == y) && (y == z)
e532198d58f4 week 1 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 0
diff changeset
12
e532198d58f4 week 1 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 0
diff changeset
13
e532198d58f4 week 1 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 0
diff changeset
14 {-
e532198d58f4 week 1 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 0
diff changeset
15 threeDifferent (2+3) 5 (11 ` div ` 2)
e532198d58f4 week 1 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 0
diff changeset
16 ((2+3) /= 5) && (5 /= (11 ` div ` 2)) && ((11 ` div ` 2) /= (2+3))
e532198d58f4 week 1 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 0
diff changeset
17 (5 /= 5) && ((5 /= (11 ` div ` 2)) && ((11 ` div ` 2) /= (2+3)))
e532198d58f4 week 1 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 0
diff changeset
18 False && ((5 /= (11 ` div ` 2)) && ((11 ` div ` 2) /= (2+3)))
e532198d58f4 week 1 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 0
diff changeset
19 False
e532198d58f4 week 1 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 0
diff changeset
20
e532198d58f4 week 1 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 0
diff changeset
21 Schritte von oben nach unten:
e532198d58f4 week 1 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 0
diff changeset
22 threeDifferent ersetzen
e532198d58f4 week 1 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 0
diff changeset
23 Linke Seite des ersten &&
e532198d58f4 week 1 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 0
diff changeset
24 5 /= 5 auswerten
e532198d58f4 week 1 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 0
diff changeset
25 False && x = False (&& ist rechtsassoizativ)
e532198d58f4 week 1 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 0
diff changeset
26
e532198d58f4 week 1 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 0
diff changeset
27
e532198d58f4 week 1 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 0
diff changeset
28 ---
e532198d58f4 week 1 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 0
diff changeset
29
e532198d58f4 week 1 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 0
diff changeset
30
e532198d58f4 week 1 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 0
diff changeset
31 fourEqual (2+3) 5 (11 ` div ` 2) (21 ` mod ` 11)
e532198d58f4 week 1 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 0
diff changeset
32 ((2+3) == 5) && (5 == (11 ` div ` 2)) && ((11 ` div ` 2) == (21 ` mod ` 11))
e532198d58f4 week 1 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 0
diff changeset
33 (5 == 5) && (5 == (11 ` div ` 2)) && ((11 ` div ` 2) == (21 ` mod ` 11))
e532198d58f4 week 1 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 0
diff changeset
34 True && (5 == (11 ` div ` 2)) && ((11 ` div ` 2) == (21 ` mod ` 11))
e532198d58f4 week 1 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 0
diff changeset
35 (5 == (11 ` div ` 2)) && ((11 ` div ` 2) == (21 ` mod ` 11))
e532198d58f4 week 1 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 0
diff changeset
36 (5 == 5) && ((11 ` div ` 2) == (21 ` mod ` 11))
e532198d58f4 week 1 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 0
diff changeset
37 True && ((11 ` div ` 2) == (21 ` mod ` 11))
e532198d58f4 week 1 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 0
diff changeset
38 ((11 ` div ` 2) == (21 ` mod ` 11))
e532198d58f4 week 1 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 0
diff changeset
39 (5 == (21 ` mod ` 11))
e532198d58f4 week 1 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 0
diff changeset
40 (5 == 10)
e532198d58f4 week 1 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 0
diff changeset
41 False
e532198d58f4 week 1 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 0
diff changeset
42
e532198d58f4 week 1 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 0
diff changeset
43 Schritte von oben nach unten:
e532198d58f4 week 1 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 0
diff changeset
44 fourEqual ersetzen
e532198d58f4 week 1 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 0
diff changeset
45 Linke Seite des ersten &&
e532198d58f4 week 1 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 0
diff changeset
46 5 == 5 auswerten
e532198d58f4 week 1 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 0
diff changeset
47 True && x = x
e532198d58f4 week 1 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 0
diff changeset
48 Linke Seite des zweiten && (div ist Ganzzahldivision)
e532198d58f4 week 1 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 0
diff changeset
49 5 == 5 auswerten
e532198d58f4 week 1 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 0
diff changeset
50 True && x = x
e532198d58f4 week 1 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 0
diff changeset
51 Links nach rechts
e532198d58f4 week 1 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 0
diff changeset
52 5 == 10 auswerten
e532198d58f4 week 1 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 0
diff changeset
53 -}
0
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
54
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
55
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
56
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
57 {---------------------------------------------------------------------}
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
58 {- G1.2 -}
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
59 fac :: Integer -> Integer
1
e532198d58f4 week 1 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 0
diff changeset
60 fac 0 = 1
e532198d58f4 week 1 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 0
diff changeset
61 fac n | n > 0 = n * fac (n-1)
e532198d58f4 week 1 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 0
diff changeset
62
0
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
63
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
64 sum_ten :: Integer -> Integer
1
e532198d58f4 week 1 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 0
diff changeset
65 sum_ten n = sum_ten' n 9
e532198d58f4 week 1 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 0
diff changeset
66 where
e532198d58f4 week 1 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 0
diff changeset
67 sum_ten' :: Integer -> Integer -> Integer
e532198d58f4 week 1 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 0
diff changeset
68 sum_ten' n 0 = n
e532198d58f4 week 1 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 0
diff changeset
69 sum_ten' n x = n + x + sum_ten' n (x-1)
e532198d58f4 week 1 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 0
diff changeset
70
e532198d58f4 week 1 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 0
diff changeset
71
e532198d58f4 week 1 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 0
diff changeset
72 sum_ten_gauss :: Integer -> Integer
e532198d58f4 week 1 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 0
diff changeset
73 sum_ten_gauss n = 10 * n + 45
0
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
74
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
75
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
76
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
77 {---------------------------------------------------------------------}
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
78 {- G1.3 -}
1
e532198d58f4 week 1 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 0
diff changeset
79 {-
e532198d58f4 week 1 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 0
diff changeset
80 g ist leicht veraendert, um Mehrdeutigkeiten zu vermeiden.
e532198d58f4 week 1 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 0
diff changeset
81 Original:
e532198d58f4 week 1 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 0
diff changeset
82 g :: Integer -> Integer
e532198d58f4 week 1 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 0
diff changeset
83 g n = if n < 10 then n*n else n
e532198d58f4 week 1 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 0
diff changeset
84 -}
e532198d58f4 week 1 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 0
diff changeset
85
0
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
86 g :: Integer -> Integer
1
e532198d58f4 week 1 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 0
diff changeset
87 g n = if n < 10 then n*n else 2*n
e532198d58f4 week 1 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 0
diff changeset
88
0
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
89
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
90 max_g :: Integer -> Integer
1
e532198d58f4 week 1 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 0
diff changeset
91 max_g n
e532198d58f4 week 1 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 0
diff changeset
92 | n <= 0 = 0
e532198d58f4 week 1 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 0
diff changeset
93 | otherwise =
e532198d58f4 week 1 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 0
diff changeset
94 if (g x < g n) then n else x
e532198d58f4 week 1 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 0
diff changeset
95 where
e532198d58f4 week 1 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 0
diff changeset
96 x = max_g (n-1)
e532198d58f4 week 1 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 0
diff changeset
97
0
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
98
1
e532198d58f4 week 1 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 0
diff changeset
99 max_g' :: Integer -> Integer
e532198d58f4 week 1 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 0
diff changeset
100 max_g' n
e532198d58f4 week 1 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 0
diff changeset
101 | n < 0 = 0
e532198d58f4 week 1 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 0
diff changeset
102 | n <= 9 = n
e532198d58f4 week 1 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 0
diff changeset
103 -- Siehe Aenderung von g
e532198d58f4 week 1 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 0
diff changeset
104 | n < 41 = 9
e532198d58f4 week 1 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 0
diff changeset
105 | otherwise = n
e532198d58f4 week 1 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 0
diff changeset
106
e532198d58f4 week 1 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 0
diff changeset
107
e532198d58f4 week 1 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 0
diff changeset
108 prop_max_g :: Integer -> Bool
e532198d58f4 week 1 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 0
diff changeset
109 prop_max_g n =
e532198d58f4 week 1 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 0
diff changeset
110 max_g n == max_g' n
e532198d58f4 week 1 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 0
diff changeset
111
e532198d58f4 week 1 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 0
diff changeset
112
e532198d58f4 week 1 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 0
diff changeset
113
e532198d58f4 week 1 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 0
diff changeset
114 {---------------------------------------------------------------------}
0
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
115 {- Aufgabe H1.1 -}
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
116 {-WETT-} {- Diese Zeile nicht entfernen -}
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
117 sum_max_sq :: Integer -> Integer -> Integer -> Integer
4
e02058a1afbd week 1 homework
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 1
diff changeset
118 sum_max_sq x y z = max x y ^ 2 + min x y `max` z ^ 2
0
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
119 {-TTEW-} {- Diese Zeile nicht enfernen! -}
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
120
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
121
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
122
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
123 {---------------------------------------------------------------------}
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
124 {- Aufgabe H1.2 -}
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
125 {- Teil 1 -}
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
126 f :: Integer -> Integer
4
e02058a1afbd week 1 homework
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 1
diff changeset
127 f n
e02058a1afbd week 1 homework
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 1
diff changeset
128 | n > 100 = n - 10
e02058a1afbd week 1 homework
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 1
diff changeset
129 | otherwise = f (f (n + 11))
e02058a1afbd week 1 homework
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 1
diff changeset
130
0
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
131
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
132 {- Teil 2 -}
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
133 {-
4
e02058a1afbd week 1 homework
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 1
diff changeset
134 - [(x, f x) | x <- [0,1,2,3,42,101,1001,-10]]
e02058a1afbd week 1 homework
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 1
diff changeset
135 -
e02058a1afbd week 1 homework
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 1
diff changeset
136 - ( x, f x)
e02058a1afbd week 1 homework
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 1
diff changeset
137 - -----------
e02058a1afbd week 1 homework
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 1
diff changeset
138 - ( 0, 91)
e02058a1afbd week 1 homework
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 1
diff changeset
139 - ( 1, 91)
e02058a1afbd week 1 homework
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 1
diff changeset
140 - ( 2, 91)
e02058a1afbd week 1 homework
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 1
diff changeset
141 - ( 3, 91)
e02058a1afbd week 1 homework
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 1
diff changeset
142 - ( 42, 91)
e02058a1afbd week 1 homework
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 1
diff changeset
143 - ( 101, 91)
e02058a1afbd week 1 homework
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 1
diff changeset
144 - (1001, 991)
e02058a1afbd week 1 homework
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 1
diff changeset
145 - ( -10, 91)
0
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
146 -}
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
147
4
e02058a1afbd week 1 homework
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 1
diff changeset
148
0
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
149 {- Teil 3 -}
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
150 f' :: Integer -> Integer
4
e02058a1afbd week 1 homework
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 1
diff changeset
151 f' n = if n > 101 then n - 10 else 91
e02058a1afbd week 1 homework
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 1
diff changeset
152
0
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
153
4
e02058a1afbd week 1 homework
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 1
diff changeset
154 {- Quickcheck test -}
e02058a1afbd week 1 homework
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 1
diff changeset
155 prop_f n = f n == f' n
0
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
156
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
157
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
158
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
159 {---------------------------------------------------------------------}
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
160 {- Aufgabe H1.3 -}
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
161 {- Teil 1 -}
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
162 is_square' :: Integer -> Integer -> Bool
4
e02058a1afbd week 1 homework
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 1
diff changeset
163 is_square' n 0 = n == 0
e02058a1afbd week 1 homework
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 1
diff changeset
164 is_square' n m
e02058a1afbd week 1 homework
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 1
diff changeset
165 | m < 0 = False
e02058a1afbd week 1 homework
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 1
diff changeset
166 | otherwise = m * m == n || is_square' n (m-1)
e02058a1afbd week 1 homework
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 1
diff changeset
167
0
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
168
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
169 {- Teil 2 -}
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
170 is_square :: Integer -> Bool
4
e02058a1afbd week 1 homework
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 1
diff changeset
171 is_square n
e02058a1afbd week 1 homework
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 1
diff changeset
172 | n < 0 = False
e02058a1afbd week 1 homework
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 1
diff changeset
173 | otherwise = is_square' n n