Zadání úlohy č. 3

[cviceni3.lhs]
[reseni.lhs]

Základy programování v jazyce Haskell 2

Spusťte si kompilátor Win Hugs. Můžete použít tyto příkazy:

Prace s obrazky ve znakovem rezimu

Obrazek je definovan jako seznam radku stejne delky, kazdy radek obsahuje znaky '.' a '#' reprezentujici bile a cerne pole.
> type Pic = [String]
Pro vykresleni obrazku je k dispozici pomocna funkce pp, ktera nejprve prida na konec kazdeho radku obrazku znak konce radku, vsechny radky spoji do jedineho retezce a tento retezec zobrazi.
> pp :: Pic -> IO ()
> pp = putStr . concat . map (++"\n")
Jako priklad obrazku nasleduje sipka, na ktere muzeme testovat reseni dalsich uloh.
> obr :: Pic
> obr = ["....#....",
>        "...###...",
>        "..#.#.#..",
>        ".#..#..#.",
>        "....#....",
>        "....#....",
>        "....#####"]
  1. Funkce flipV prevrati obrazek ve vertikalnim smeru.
  2. Funkce flipH prevrati obrazek v horizontalnim smeru.
  3. Funkce above umisti jeden obrazek nad druhy. Predpokladame, ze oba obrazky maji stejnou sirku.
  4. Funkce sideBySide umisti obrazky vedle sebe. Predpokladame, ze oba obrazky maji stejnou vysku.
  5. Funkce rotateR a rotateL otoci obrazek o 90 stupnu doprava, resp. doleva.
  6. Funkce rot180 otoci obrazek o 180.