Added solutions for Blatt 3 & Blatt 5
To compile and run Blatt5 just do a "stack build" and either stack exec Blatt5-static or stack exec Blatt5-animated
This commit is contained in:
30
Übungen/Blatt5-solution/app/Main-Animated.hs
Normal file
30
Übungen/Blatt5-solution/app/Main-Animated.hs
Normal file
@ -0,0 +1,30 @@
|
||||
module Main where
|
||||
|
||||
import Parser
|
||||
import GUI
|
||||
import Types
|
||||
import Data.ByteString as BS
|
||||
import Data.Array
|
||||
import Data.Time
|
||||
import Data.Word
|
||||
import Graphics.Gloss
|
||||
import Data.Monoid
|
||||
|
||||
datafile :: String
|
||||
datafile = "time_ip.csv"
|
||||
|
||||
mainAnimate :: IO ()
|
||||
mainAnimate = do
|
||||
df <- BS.readFile datafile
|
||||
let pd = ipBuckets <$> parseData df
|
||||
case pd of
|
||||
Right pd' -> animate (InWindow "Animation" (800,600) (100,200)) white (animateGrid 240 200 pd')
|
||||
Left err -> print $ "parsing Error:" <> err
|
||||
|
||||
main :: IO ()
|
||||
main = mainAnimate
|
||||
|
||||
ipBuckets :: [Data] -> Array (Word8,Word8,Int) Int
|
||||
ipBuckets d = accumArray (+) 0 ((0,0,0),(15,15,23)) (f <$> d)
|
||||
where
|
||||
f (Data _ (TimeOfDay h m _) (IPv4 a _ _ _)) = ((a `div` 16, a `mod` 16, h), 1)
|
30
Übungen/Blatt5-solution/app/Main-Static.hs
Normal file
30
Übungen/Blatt5-solution/app/Main-Static.hs
Normal file
@ -0,0 +1,30 @@
|
||||
module Main where
|
||||
|
||||
import Parser
|
||||
import GUI
|
||||
import Types
|
||||
import Data.ByteString as BS
|
||||
import Data.Array
|
||||
import Data.Time
|
||||
import Data.Word
|
||||
import Graphics.Gloss
|
||||
import Data.Monoid
|
||||
|
||||
datafile :: String
|
||||
datafile = "time_ip.csv"
|
||||
|
||||
mainStatic :: IO ()
|
||||
mainStatic = do
|
||||
df <- BS.readFile datafile
|
||||
let pd = hourBuckets <$> parseData df
|
||||
case pd of
|
||||
Right pd' -> display (InWindow "Bar Chart" (800,600) (100,200)) white (drawBar 240 200 pd')
|
||||
Left err -> print $ "parsing Error:" <> err
|
||||
|
||||
main :: IO ()
|
||||
main = mainStatic
|
||||
|
||||
hourBuckets :: [Data] -> Array Int Int
|
||||
hourBuckets d = accumArray (+) 0 (0,23) (f <$> d)
|
||||
where
|
||||
f (Data _ (TimeOfDay h _ _) _) = (h,1)
|
Reference in New Issue
Block a user