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:
- Editace souboru
- Načtení skriptu
- :load [soubor.hs]
- :reload
- Ukončení - :quit
- Nápověda - :?
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 = ["....#....",
> "...###...",
> "..#.#.#..",
> ".#..#..#.",
> "....#....",
> "....#....",
> "....#####"]
- Funkce flipV prevrati obrazek ve vertikalnim smeru.
- Funkce flipH prevrati obrazek v horizontalnim smeru.
- Funkce above umisti jeden obrazek nad druhy. Predpokladame, ze oba obrazky
maji stejnou sirku.
- Funkce sideBySide umisti obrazky vedle sebe. Predpokladame, ze oba obrazky
maji stejnou vysku.
- Funkce rotateR a rotateL otoci obrazek o 90 stupnu doprava, resp. doleva.
- Funkce rot180 otoci obrazek o 180.