solutions block 3
parent
babff7d797
commit
90d4ccd985
|
@ -0,0 +1,17 @@
|
|||
safeHead :: [a] -> Maybe a
|
||||
safeHead [] = Nothing
|
||||
safeHead (x:_) = Just x
|
||||
|
||||
safeTail :: [a] -> Maybe [a]
|
||||
safeTail [] = Nothing
|
||||
safeTail (_:xs) = Just xs
|
||||
|
||||
safeLast :: [a] -> Maybe a
|
||||
safeLast [] = Nothing
|
||||
safeLast[x] = Just x
|
||||
safeLast (_:xs) = safeLast xs
|
||||
|
||||
safeInit :: [a] -> Maybe [a]
|
||||
safeInit [] = Nothing
|
||||
safeInit [_] = Just []
|
||||
safeInit (x:xs) = fmap ([x] ++) (safeInit xs)
|
|
@ -0,0 +1,27 @@
|
|||
-- 1. Definition der magischen Wesen
|
||||
data MagicalCreature = Dragon String Int Int
|
||||
| Unicorn String Int Int
|
||||
| Wizard String Int Int
|
||||
deriving (Show)
|
||||
|
||||
-- 2. Beschreibung der magischen Wesen
|
||||
describeMagicalCreature :: MagicalCreature -> String
|
||||
describeMagicalCreature (Dragon name level experience) = name ++ " ist ein Drache mit Magielevel " ++ show level ++ " und " ++ show experience ++ " Erfahrungspunkten."
|
||||
describeMagicalCreature (Unicorn name level experience) = name ++ " ist ein Einhorn mit Magielevel " ++ show level ++ " und " ++ show experience ++ " Erfahrungspunkten."
|
||||
describeMagicalCreature (Wizard name level experience) = name ++ " ist ein Zauberer mit Magielevel " ++ show level ++ " und " ++ show experience ++ " Erfahrungspunkten."
|
||||
|
||||
-- 3. Kräfte
|
||||
class Fighter a where
|
||||
power :: a -> Int
|
||||
|
||||
instance Fighter MagicalCreature where
|
||||
power (Dragon _ level experience) = (level + experience) * 3
|
||||
power (Unicorn _ level experience) = (level + experience) * 4
|
||||
power (Wizard _ level experience) = (level + experience) * 5
|
||||
|
||||
-- 4. Magisches Duell
|
||||
duel :: (Fighter a) => a -> a -> Either String a
|
||||
duel fighter1 fighter2
|
||||
| power fighter1 > power fighter2 = Right fighter1
|
||||
| power fighter1 < power fighter2 = Right fighter2
|
||||
| otherwise = Left "Unentschieden!"
|
Loading…
Reference in New Issue