Add initial implementation for UE2 A1, begin A2
This commit is contained in:
		@@ -14,33 +14,45 @@ module Angabe2 where
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type Nat1              = Int
 | 
					type Nat1              = Int
 | 
				
			||||||
newtype Vorname        = Vorname String deriving Show
 | 
					newtype Vorname        = Vorname String deriving (Eq,Show,Ord)
 | 
				
			||||||
newtype Nachname       = Nachname String deriving Show
 | 
					newtype Nachname       = Nachname String deriving (Eq,Show,Ord)
 | 
				
			||||||
data VHDS              = Viertel | Halb | Dreiviertel | Schlag deriving (Eq,Ord)
 | 
					data VHDS              = Viertel | Halb | Dreiviertel | Schlag deriving (Eq,Ord,Show)
 | 
				
			||||||
data Stunde            = Eins | Zwei | Drei | Vier | Fuenf | Sechs
 | 
					data Stunde            = Eins | Zwei | Drei | Vier | Fuenf | Sechs
 | 
				
			||||||
                         | Sieben | Acht | Neun | Zehn | Elf 
 | 
					                         | Sieben | Acht | Neun | Zehn | Elf
 | 
				
			||||||
                         | Zwoelf deriving (Eq,Ord)
 | 
					                         | Zwoelf deriving (Eq,Ord,Show)
 | 
				
			||||||
data VorNachMittag     = VM | NM deriving (Eq,Ord)
 | 
					data VorNachMittag     = VM | NM deriving (Eq,Ord,Show)
 | 
				
			||||||
newtype Uhrzeit        = U (VHDS,Stunde,VorNachMittag) deriving (Eq,Ord)
 | 
					newtype Uhrzeit        = U (VHDS,Stunde,VorNachMittag) deriving (Eq,Ord,Show)
 | 
				
			||||||
data Tag               = I | II | III | IV | V | VI | VII | VIII | IX | X
 | 
					data Tag               = I | II | III | IV | V | VI | VII | VIII | IX | X
 | 
				
			||||||
                         | XI | XII | XIII | XIV | XV | XVI | XVII | XVIII 
 | 
					                         | XI | XII | XIII | XIV | XV | XVI | XVII | XVIII
 | 
				
			||||||
                         | XIX | XX | XXI | XXII | XXIII | XXIV | XXV
 | 
					                         | XIX | XX | XXI | XXII | XXIII | XXIV | XXV
 | 
				
			||||||
                         | XXVI | XXVII | XXVIII | XXIX | XXX 
 | 
					                         | XXVI | XXVII | XXVIII | XXIX | XXX
 | 
				
			||||||
                         | XXXI deriving (Eq,Ord)
 | 
					                         | XXXI deriving (Eq,Ord,Show)
 | 
				
			||||||
data Monat             = Jan | Feb | Mar | Apr | Mai | Jun 
 | 
					data Monat             = Jan | Feb | Mar | Apr | Mai | Jun
 | 
				
			||||||
                         | Jul | Aug | Sep | Okt | Nov | Dez deriving (Eq,Ord)
 | 
					                         | Jul | Aug | Sep | Okt | Nov | Dez deriving (Eq,Ord,Show)
 | 
				
			||||||
type Jahr              = Nat1
 | 
					type Jahr              = Nat1
 | 
				
			||||||
data Datum             = D Tag Monat Jahr deriving Eq
 | 
					data Datum             = D Tag Monat Jahr deriving (Eq,Show,Ord)
 | 
				
			||||||
data Testart           = PCR | Antigen deriving Eq
 | 
					data Testart           = PCR | Antigen deriving (Eq,Show,Ord)
 | 
				
			||||||
data Impfstoff         = AstraZeneca | BioNTec | JundJ | Moderna 
 | 
					data Impfstoff         = AstraZeneca | BioNTec | JundJ | Moderna
 | 
				
			||||||
                         | Sputnik | Sinovac deriving (Eq,Show)
 | 
					                         | Sputnik | Sinovac deriving (Eq,Show,Ord)
 | 
				
			||||||
data Anzahl            = Einmal | Zweimal deriving Eq
 | 
					data Anzahl            = Einmal | Zweimal deriving (Eq,Show,Ord)
 | 
				
			||||||
data DreiG_Status      = Geimpft (Impfstoff,Anzahl) | Genesen 
 | 
					data DreiG_Status      = Geimpft {
 | 
				
			||||||
                         | Getestet Testart Datum Uhrzeit 
 | 
					                           impfstoff :: Impfstoff,
 | 
				
			||||||
                         | Udrei deriving (Eq,Show)
 | 
					                           anzahl :: Anzahl
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                        | Genesen
 | 
				
			||||||
 | 
					                        | Getestet {
 | 
				
			||||||
 | 
					                            testart :: Testart,
 | 
				
			||||||
 | 
					                            datum :: Datum,
 | 
				
			||||||
 | 
					                            uhrzeit :: Uhrzeit
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                        | Udrei deriving (Eq,Show,Ord)
 | 
				
			||||||
                           -- Udrei: Ungetestet, Ungenesen, Ungeimpft
 | 
					                           -- Udrei: Ungetestet, Ungenesen, Ungeimpft
 | 
				
			||||||
data Regel             = DreiG | ZweieinhalbG | ZweiG deriving Eq
 | 
					data Regel             = DreiG | ZweieinhalbG | ZweiG deriving Eq
 | 
				
			||||||
data Person            = P Vorname Nachname DreiG_Status deriving (Eq,Ord)
 | 
					data Person            = P {
 | 
				
			||||||
 | 
					                           vorname :: Vorname,
 | 
				
			||||||
 | 
					                           nachname :: Nachname,
 | 
				
			||||||
 | 
					                           dreig_status :: DreiG_Status
 | 
				
			||||||
 | 
					                        } deriving (Eq,Ord)
 | 
				
			||||||
type Einlassbegehrende = [Person]
 | 
					type Einlassbegehrende = [Person]
 | 
				
			||||||
type VorUndNachname    = String
 | 
					type VorUndNachname    = String
 | 
				
			||||||
type Einzulassende     = [VorUndNachname]
 | 
					type Einzulassende     = [VorUndNachname]
 | 
				
			||||||
@@ -50,47 +62,51 @@ data Kontrollergebnis  = Einlassen | Abweisen | Ungueltig deriving (Eq,Show)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
-- Aufgabe A.2
 | 
					-- Aufgabe A.2
 | 
				
			||||||
 | 
					 | 
				
			||||||
einzulassen :: (Person,Regel,Kontrollzeitpunkt) -> Kontrollergebnis
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
{- Knapp, aber gut nachvollziehbar geht einzulassen folgendermassen vor:
 | 
					{- Knapp, aber gut nachvollziehbar geht einzulassen folgendermassen vor:
 | 
				
			||||||
   ...
 | 
					   ...
 | 
				
			||||||
-}
 | 
					-}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					einzulassen :: (Person,Regel,Kontrollzeitpunkt) -> Kontrollergebnis
 | 
				
			||||||
 | 
					einzulassen (p, r, k)
 | 
				
			||||||
 | 
					   | dreig_status p == Udrei = Abweisen
 | 
				
			||||||
 | 
					   | r == ZweiG =
 | 
				
			||||||
 | 
					      if testart (dreig_status p) == Antigen then Abweisen
 | 
				
			||||||
 | 
					      else Einlassen
 | 
				
			||||||
 | 
					   | otherwise = Einlassen
 | 
				
			||||||
 | 
					
 | 
				
			||||||
-- Aufgabe A.3
 | 
					-- Aufgabe A.3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
einzulassende :: Einlassbegehrende -> Regel -> Kontrollzeitpunkt -> Einzulassende
 | 
					--einzulassende :: Einlassbegehrende -> Regel -> Kontrollzeitpunkt -> Einzulassende
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
{- Knapp, aber gut nachvollziehbar geht einzulassende folgendermassen vor: 
 | 
					{- Knapp, aber gut nachvollziehbar geht einzulassende folgendermassen vor:
 | 
				
			||||||
   ... 
 | 
					   ...
 | 
				
			||||||
-}
 | 
					-}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
-- Aufgabe A.4
 | 
					-- Aufgabe A.4
 | 
				
			||||||
 | 
					
 | 
				
			||||||
einzulassende_abzuweisende :: Einlassbegehrende -> Regel -> Kontrollzeitpunkt -> ([Einzulassende],[Abzuweisende])
 | 
					--einzulassende_abzuweisende :: Einlassbegehrende -> Regel -> Kontrollzeitpunkt -> ([Einzulassende],[Abzuweisende])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
{- Knapp, aber gut nachvollziehbar geht einzulassende_abzuweisende folgendermassen vor: 
 | 
					{- Knapp, aber gut nachvollziehbar geht einzulassende_abzuweisende folgendermassen vor:
 | 
				
			||||||
   ... 
 | 
					   ...
 | 
				
			||||||
-}
 | 
					-}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
-- Aufgabe A.5
 | 
					-- Aufgabe A.5
 | 
				
			||||||
 | 
					
 | 
				
			||||||
instance Show Uhrzeit where
 | 
					--instance Show Uhrzeit where
 | 
				
			||||||
 show ...
 | 
					 --show ...
 | 
				
			||||||
 | 
					
 | 
				
			||||||
{- Knapp, aber gut nachvollziehbar geht die Implementierung von show fuer Uhrzeit 
 | 
					{- Knapp, aber gut nachvollziehbar geht die Implementierung von show fuer Uhrzeit
 | 
				
			||||||
   folgendermassen vor:
 | 
					   folgendermassen vor:
 | 
				
			||||||
   ...
 | 
					   ...
 | 
				
			||||||
-}
 | 
					-}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
instance Show Datum where
 | 
					--instance Show Datum where
 | 
				
			||||||
 show ...
 | 
					-- show ...
 | 
				
			||||||
 | 
					
 | 
				
			||||||
{- Knapp, aber gut nachvollziehbar geht die Implementierung von show fuer Datum 
 | 
					{- Knapp, aber gut nachvollziehbar geht die Implementierung von show fuer Datum
 | 
				
			||||||
   folgendermassen vor:
 | 
					   folgendermassen vor:
 | 
				
			||||||
   ...
 | 
					   ...
 | 
				
			||||||
-}
 | 
					-}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user