FP Cvičení 6

From Marek Běhálek Wiki
Revision as of 10:30, 20 October 2021 by Fai0013 (talk | contribs)
Jump to navigation Jump to search

Operátory

  • Definujte funkce, které provádí příslušné logické operace: not', and', or', nand', xor', impl', equ'
  • Definujte 'standardní' prioritu pro případ, kdy je použijeme jako operátory.
  • Implemenetujte funkci která vytiskne pravdivostní tabulku logického výrazu.
table :: (Bool -> Bool -> Bool) -> IO ()
table (\a b -> (and' a (or' a b)))                                                                              
True  True  True
True  False True
False True  False
False False False
Show solution
  • Rozšiřte predchozí funkci tak aby přijímala výraz s libovolným počtem proměnných (počet proměnných bude zadán jako druhý parametr).
tablen :: Int -> ([Bool] -> Bool) -> IO ()
 tablen 3 (\[a,b,c] -> a `and'` (b `or'` c) `equ'` a `and'` b `or'` a `and'` c)
True   True   True   => True
True   True   False  => True
True   False  True   => True
True   False  False  => False
False  True   True   => False
False  True   False  => False
False  False  True   => False
False  False  False  => False
Show solution

Komplexní funkce - Huffmanovo kódování

Video logo.png
huffman :: [(Char, Int)] -> [(Char, String)]
*Main>  huffman [('a',45),('b',13),('c',12),('d',16),('e',9),('f',5)]
[('a',"0"),('b',"101"),('c',"100"),('d',"111"),('e',"1101"),('f',"1100")]
Show solution