Advertisement
Guest User

Untitled

a guest
Dec 7th, 2017
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.51 KB | None | 0 0
  1. module Main where
  2. import Lib
  3.  
  4. data Zdanie = Z Char | N Zdanie | K Zdanie Zdanie | A Zdanie Zdanie | C Zdanie Zdanie
  5.  
  6. main :: IO()
  7. main = do
  8. let zdanie_test = C (N (Z 'p')) (A (K (Z 'p') (Z 'q')) (Z 'r'))
  9. let test1 = Z 'p'
  10. print (wypiszZmienne zdanie_test [])
  11.  
  12. -- Podpunkt 1
  13. drukujZdanie :: Zdanie -> String
  14. drukujZdanie (Z x) = [x]
  15. drukujZdanie (N z) = "~" ++ drukujZdanie z
  16. drukujZdanie (K z1 z2) = "(" ++ drukujZdanie z1 ++ " & " ++ drukujZdanie z2 ++ ")"
  17. drukujZdanie (A z1 z2) = "(" ++ drukujZdanie z1 ++ " | " ++ drukujZdanie z2 ++ ")"
  18. drukujZdanie (C z1 z2) = "(" ++ drukujZdanie z1 ++ " => " ++ drukujZdanie z2 ++ ")"
  19.  
  20. -- Podpunkt 2
  21. wypiszZmienne :: Zdanie -> [Char] -> String
  22. wypiszZmienne (Z x) wynik = dodajTablice wynik [x]
  23. wypiszZmienne (N z) wynik = dodajTablice wynik (wypiszZmienne z wynik)
  24. wypiszZmienne (K z1 z2) wynik = dodajTablice (dodajTablice wynik (wypiszZmienne z1 wynik)) (wypiszZmienne z2 wynik)
  25. wypiszZmienne (A z1 z2) wynik = dodajTablice (dodajTablice wynik (wypiszZmienne z1 wynik)) (wypiszZmienne z2 wynik)
  26. wypiszZmienne (C z1 z2) wynik = dodajTablice (dodajTablice wynik (wypiszZmienne z1 wynik)) (wypiszZmienne z2 wynik)
  27.  
  28. dodajTablice :: [Char] -> [Char] -> [Char]
  29. dodajTablice origin [] = origin
  30. dodajTablice origin temp = if (length (filter (\x -> x == temp!!0) origin) > 0)
  31. then dodajTablice origin (filter (/=temp!!0) temp)
  32. else dodajTablice (origin++[temp!!0]) (filter (/=temp!!0) temp)
  33.  
  34. -- Podpunkt 3
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement