Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import Data.Map as Map
- -- ZADANIA GRUPOWE
- -- Rekurencyjna funkcja formatujca wy[wietlanie tablicy
- formatuj :: String -> String -> String
- formatuj [a] str = [a]
- formatuj (h:t) str = [h] ++ str ++ formatuj t str
- -- Definicje predykatów
- data Zdanie = Z Char
- | N Zdanie
- | K Zdanie Zdanie
- | A Zdanie Zdanie
- | C Zdanie Zdanie
- usun_duplikat :: (Eq a) => [a] -> [a]
- usun_duplikat [] = []
- -- Usuwa rekurencyjnie duplikaty (takie same warto[ci obok siebie) z tablicy
- usun_duplikat (h:t) = if znajdz h t == True then usun_duplikat t else h : usun_duplikat t
- znajdz :: (Eq a) => a -> [a] -> Bool
- -- Cokolwiek w pustej tablicy
- znajdz _ [] = False
- -- Szuka rekurencyjnie
- znajdz a (h:t) = if h == a then True else znajdz a t
- -- Przeci|enie show w celu zmiany wy[wietlania
- instance Show Zdanie where
- show (Z a) = [a]
- show (N a) = show a
- show (A a b) = usun_duplikat( show a ++ show b)
- show (K a b) = usun_duplikat( show a ++ show b)
- show (C a b) = usun_duplikat( show a ++ show b)
- -- ZADANIE 1
- drukuj :: Zdanie -> String
- drukuj (Z a) = [a]
- drukuj (N a) = "~" ++ drukuj a
- drukuj (A a b) = "(" ++ drukuj a ++ " | " ++ drukuj b ++ ")"
- drukuj (K a b) = "(" ++ drukuj a ++ " & " ++ drukuj b ++ ")"
- drukuj (C a b) = "(" ++ drukuj a ++ " => " ++ drukuj b ++ ")"
- -- ZADANIE 2
- wypisz_zmienne :: Zdanie -> IO ()
- wypisz_zmienne a = putStrLn ( "[" ++ (formatuj (show a) ", " ) ++ "]" )
- -- ZADANIE 3
- sprawdz :: Zdanie -> Map.Map Char Bool -> Bool
- sprawdz (Z x) map = Map.findWithDefault False x map
- sprawdz (N x) map = not(sprawdz x map)
- sprawdz (A x y) map = (sprawdz x map) || (sprawdz y map)
- sprawdz (K x y) map = (sprawdz x map) && (sprawdz y map)
- sprawdz (C x y) map = not(sprawdz x map) || (sprawdz y map)
- -- PrzykBadowe dane
- przyklad = (C (N (Z 'p')) (A (K (Z 'p') (Z 'q')) (Z 'r')))
- mapa_wartosci = Map.fromList [('p', False), ('q', True), ('r', False)]
- main = do
- print (drukuj przyklad)
- print (sprawdz przyklad mapa_wartosci)
- wypisz_zmienne przyklad
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement