FP Homework 1
1 - Šachová pozice
Napište funkci sachy, která má 2 argumenty typu seznam řetězců. Řetězce v seznamech obsahují 3 znaky: - první určuje šachovou figuru ('K' - král, 'D' - dáma, 'V' - věž, 'S' - střelec, 'J' - jezdec, 'P' - pěšec) - druhý znak určuje sloupec ('a'-'h') - třetí je číslo řádku ('1'-'8') První seznam reprezentuje aktuální rozmístění bílých figur a druhý černých. Vypište aktuální pozici tak, že volná políčka budou reprezentována znakem '.', bílé figury svým písmenem velkým a černé figury svým písmenem malým. Řádky i sloupce budou označeny čísly resp. písmeny.
sachy ["Ke1","Va1","Vh1","Pa2","Se5"] ["Ke8","Va8","Vh8","Pa7","Dd8","Sc8","Jb8"]
8vjsdk..v 7p....... 6........ 5....S... 4........ 3........ 2P....... 1V...K..V
abcdefgh
2 - Piškvorky
Napište funkci sachPozice, která má 2 argumenty. První je dvojice přirozených čísel určující počet řádků a sloupců hrací plochy. Druhý seznam reprezentuje průběh hry piškvorky, kde jsou souřadnice políček, na které střídavě hrál hráč 'x' a hráč 'o'. Vypište aktuální stav hry tak, že hrací pole bude ohraničeno znaky '-' a '|', volné pozice ' ' a znaky 'x' a 'o' budou na pozicích, kam zahráli příslušní hráči.
piskvorky (8,8) [(1,1),(8,8),(2,2,)(3,3)(4,2)(3,2)]
| o| | | | | | | | | | o | | xox | |x |
3 - Bludiště
Napište funkci bludiste, která má 2 argumenty. Prvním argumentem je seznam řetězců, které reprezentují bludiště po řádcích postupně shora dolů ('*' - stěna, ' ' - průchozí pole, 's' - startovní pozice, 'c' - cílová pozice). Na začátku se nacházíme na pozici 's'. Druhým argumentem je seznam směrů pohybu ('d' - down, 'u' - up, 'l' - left, 'r' - right). Každé písmeno znamená, že se posuneme o 1 buňku daným směrem a na novou pozici umístíme znak '.' Vypište aktuální situaci po provedení všech kroků z druhého seznamu.
ukazkovyVstup = ["*********",
"*s* * *", "* * * * *", "* * * * *", "* * *", "******* *", "c *", "*********"]
bludiste ukazkovy Vstup "dddrruuurrdddrrddllllll"
- s*...* *
- .*.*.* *
- .*.*.* *
- ...*...*
- .*
c.......*
4 - Miny
Napište funkci miny, která má argument typu seznam řetězců. Řetězce reprezentují hrací plochu po řádcích postupně shora dolů ('*' - mina, ' ' - prázdné pole). Vypište hrací pole tak, že miny budou stále reprezentovány '*', ale na každém políčku bez miny bude číslo znamenající celkový počet min, se kterými toto prázdné pole přímo sousedí (sousedit může vodorovně, svisle i šikmo).
ukazkovyVstup = [" ",
" * ", " * ", " * ", " *", "*** ", "* * ", "*** "]
miny ukazkovyVstup
1110000 1*11110 1122*10 001*221 233211*
- 2011
- 8*3000
- 2000
5 - Lode
Napište funkci lode, která má dva argumenty. První je seznam řetězců, které reprezentují hrací plochu jednoho hráče po řádcích postupně shora dolů ('o' - políčko obsazené lodí, ' ' - prázdné pole). Druhým argumentem je seznam dvojic souřadnic políček, na které druhý hráč zkoušel střílet. Vykreslete aktuální stav hry tak, že řádky a sloupce budou označeny svým číslem resp. písmenem, 'o' bude dosud nezasažené políčko s lodí, 'x' zasažené políčko s lodí, '.' místo, kam se střílelo, ale nic nezasáhlo, ' ' prázdná a dosud nezasažená políčka. Můžete předpokládat hrací plochu velikosti 10x10.
ukazkovyVstup = [" o o ",
" ooo ", " oo ", " ", " ", " o ", " o ", " o ", " ", " ", " oooo "]
lode ukazkovyVstup [('a',1),('d',1),('d',2),('c',1),('b',1),('e',1),('f',1),('g',1),('c',7),('c',10)]
10 x o
9 ooo 8 oo 7 . 6 5 o 4 o 4 o 3 2 . 1..xxxx. abcdefghij