]> git.somenet.org - pub/jan/funcprog.git/blob - Aufgabe2.hs
fertig... fast
[pub/jan/funcprog.git] / Aufgabe2.hs
1 -- Aufg 2.1
2 diffFolge :: (Integer,Integer) -> [Integer]
3 diffFolge (m,n) | (m > 0) && (n > 0) = m:(diffFolge((m-n),n))
4 diffFolge (m,n) | (m <= 0) && (n > 0) = m:[]
5
6
7 -- Aufg 2.2
8 teilt :: (Integer,Integer) -> Bool
9 teilt (m,n) = last (diffFolge (m,n)) == 0
10
11
12 -- Aufg 2.3
13 zahlenBlock :: Integer -> [Integer]
14 zahlenBlock x | (x > 0) = (rem x 1000):(zahlenBlock (div x 1000))
15 zahlenBlock _ = []
16
17
18 -- Aufg 2.4
19 zeichenreihenBlock :: Integer -> [String]
20 zeichenreihenBlock x | (x > 0) = ((take (3 - length ( show (rem x 1000) )) (repeat '0') ) ++ (show (rem x 1000))):(zeichenreihenBlock (div x 1000))
21 zeichenreihenBlock _ = []
22
23
24 -- Aufg 2.5
25 siebenTeilbar :: Integer -> Bool
26 siebenTeilbar x | x > 0 = mod (as (zahlenBlock x)) 7 == 0
27 siebenTeilbar x = (mod x 7) == 0
28
29 as :: [Integer] -> Integer
30 as xs = sum (komisch xs)
31
32 -- reuse aus Aufg 1.5: alterniere die Reihe...
33 komisch :: [Integer] -> [Integer]
34 komisch (x:y:xs) = x:(-y):(komisch xs)
35 komisch (x:xs) = x:[]
36 komisch [] = []
37
38 -- Aufg 2.Z
39 -- teilt ((24889375),7) is fuckin' slow!
40 -- waehrend siebenTeilbar (24889375*1000000) immer noch schnell ist.