FP Homework 1

From Marek Běhálek Wiki
Revision as of 13:06, 15 October 2019 by Beh01 (talk | contribs) (Created page with "== 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 ('...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

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