Uvažujme hrací karty .
Máme karty čtyř barev, každá barva má dále karty 2,3,4,5,6,7,8,9,10,J,Q,K,A
Kartu budeme reprezentovat 1D polem, kde:
první prvek je barva karty (0,1,2,3). Tento prvek bude int
druhý prvek je typu string
a je to hodnota karty, tedy např. “Q” nebo “1”
Příklad karty: [1,“2”], [2,“A”], [0,“K”]
Pořadí karet v dané barvě je toto: 2,3,4,5,6,7,8,9,10,J,Q,K,A, kde
2 má nejmenší hodnotu
A má největší hodnotu
platí že $2<3$, $3<4$, … Q $<$ K, J $>$ 10, atd.
Napište funkci, který vzestupně třídí karty podle jejich barvy a podle jejich hodnoty.
na vstupu je seznam (pole) karet
funkce vrátí setříděné pole tak, že na začátku budou karty barvy 0, pak karty barvy 1,atd., přičemž v každé skupině budou karty setříděny podle jejich hodnot.
Využijte bublinkové třídění, nebo Vaše oblíbené třídění z přednášky
Příklad:
cards = [ [3,"A"], [3,"Q"], [0,"2"], [1,"10"] ]
výsledek pro setřídění:
[ [0, "2"], [1, "10"], [3, "Q"], [3, "A"] ]
Seřaďte toto pole:
cards = [[0, 'Q'], [2, '6'], [1, 'K'],
[1, '8'], [2, '10'], [2, '4'],
[3, '4'], [0, '4'], [1, '3'],
[2, '5'], [0, 'K'], [3, 'A'],
[1, 'J'], [0, '3'], [0, '9']]
Napište program, který v zadané matici nahradí souvislou oblast 0 ze zadaného bodu hodnotou 2.
Matici vezměte jako vnitřní proměnnou:
m=[
[0,0,1,0,0,1,0,0,0,0],
[0,0,1,0,0,1,0,0,0,0],
[0,0,1,1,0,1,0,0,0,1],
[0,0,1,0,0,0,1,0,1,0],
[0,0,1,0,0,0,0,1,0,0],
[0,0,1,1,0,1,0,0,0,0],
[0,0,1,0,1,1,1,1,0,0],
[0,0,1,0,0,1,0,1,1,1],
[0,0,1,0,0,1,0,0,0,0],
[0,0,1,0,0,1,0,0,0,0] ]
Program si načte počáteční bod ze standardního vstupu
Do zásobníku vložíte vstupní bod
Opakuje, dokud není zásobník prázdný:
Vytiskněte výslednou matici
Program otestujte pro vstupy: 4,4 a 9,9
Co by se stalo, pokud byste na zásobník vložili i body (x-1,y-1),(x+1,y+1),(x+1,y-1),(x-1,y+1)?
Jaká je složitost tohoto algoritmu? Uměli byste tento algoritmus zefektivnit, aby nevkládal jedno pole matice do zásobníku vícekrát?