changeset 4:e02058a1afbd

week 1 homework
author Markus Kaiser <markus.kaiser@in.tum.de>
date Sun, 28 Oct 2012 15:31:36 +0100
parents ce6ac2bddc76
children f1a337c9f260
files exercises/src/Exercise_1.hs
diffstat 1 files changed, 30 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- a/exercises/src/Exercise_1.hs	Wed Oct 24 19:33:46 2012 +0200
+++ b/exercises/src/Exercise_1.hs	Sun Oct 28 15:31:36 2012 +0100
@@ -115,39 +115,59 @@
 {- Aufgabe H1.1 -}
 {-WETT-} {- Diese Zeile nicht entfernen -}
 sum_max_sq :: Integer -> Integer -> Integer -> Integer
-sum_max_sq x y z = undefined
-
+sum_max_sq x y z = max x y ^ 2 + min x y `max` z ^ 2
 {-TTEW-} {- Diese Zeile nicht enfernen! -}
 
 
 
 {---------------------------------------------------------------------}
 {- Aufgabe H1.2 -}
-
 {- Teil 1 -}
 f :: Integer -> Integer
-f n = undefined
+f n
+  | n > 100 = n - 10
+  | otherwise = f (f (n + 11))
+
 
 {- Teil 2 -}
 {-
- - Schreiben Sie ihre Lösungen in diesen Kommentar
+ - [(x, f x) | x <- [0,1,2,3,42,101,1001,-10]]
+ -
+ - (   x, f x)
+ - -----------
+ - (   0,  91)
+ - (   1,  91)
+ - (   2,  91)
+ - (   3,  91)
+ - (  42,  91)
+ - ( 101,  91)
+ - (1001, 991)
+ - ( -10,  91)
  -}
 
+
 {- Teil 3 -}
 f' :: Integer -> Integer
-f' n = undefined
+f' n = if n > 101 then n - 10 else 91
+
 
-{-   Quickcheck test -}
+{- Quickcheck test -}
+prop_f n = f n == f' n
 
 
 
 {---------------------------------------------------------------------}
 {- Aufgabe H1.3 -}
-
 {- Teil 1 -}
 is_square' :: Integer -> Integer -> Bool
-is_square' n m = undefined
+is_square' n 0 = n == 0
+is_square' n m
+        | m < 0 = False
+        | otherwise = m * m == n || is_square' n (m-1)
+
 
 {- Teil 2 -}
 is_square :: Integer -> Bool
-is_square n = undefined
+is_square n
+        | n < 0 = False
+        | otherwise = is_square' n n