Table of Contents

Cvičení 8: Fronta, zásobník

opakování

Úkol 1 Inverzní permutace

náplň cvičení

Úloha 2 Dekódování zprávy

TE*A*QYS***SEU****NI*O**

Úloha 3 Flood fill

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] ]

Úloha 4 Fronta

Domácí úkol

Lehká varianta

ldld dldl ddll lddl lldd dlld none

lddl dldl dldl ddll
lldd dldl dldl dlld
ddll lldd dlld lddl
dldl ddll lddl dlld

V tomto případě: existuje tmavá cesta zleva doprava (mezi body a-b), světlá cesta zleva doprava (a'-b'). Tmavá cesta mezi body c-d zleva doprava nevede, nebo v bodě c neprotíná levou stranu desky.

Pro načtení vstupního souboru můžete použít tuto funkci, která vrací 2D pole, každá buňka pak obsahuje jméno dílku (indexujeme [radek][sloupec]).

def loadBoard(filename):
    b = []
    f = open(filename,"r")
    for line in f:
        b.append( line.strip().split() )
    f.close()
    return b

Příklady

Vstup:

ddll lddl dldl ddll lldd dlld lddl
dlld lldd dldl dldl ddll lddl dlld
ldld ldld lldd dlld lldd dlld lddl
ddll lddl ddll ldld ldld lddl dldl
dldl dlld lldd ddll lddl dlld lldd
dlld lddl ddll lldd dlld lddl ddll
lddl dldl dlld ldld ldld lldd dlld

Výstup:

-1 21 24 -1

Komentář: žádná světlá cesta nevedle zleva doprava (-1), tmavá cesta zleva doprava vede přes 21 dílků (z pozice 4,0 do pozice 2,6), délka světlé cesty shora dolů je 24 dílků, a žádná tmavá cesta nevede shora dolů (-1).

Vstup:

lddl none lldd
dlld lddl none
lddl dlld lldd
dlld lddl ddll
lddl dlld lldd

Výstup:

6 6 -1 -1

Těžká varianta

Příklady

Vstup:

dlld lldd dlld ldld
ddll lddl ddll lddl
lldd dldl dlld lldd
lddl none ldld lddl

Výstup:

1 1 4 4

Komentář: mapa obsahuje jeden světlý cyklus a jeden tmavý cyklus, jejich délka je v obou případech 4 dílky.

Vstup:

ddll lddl ddll lddl
dlld lldd dlld lldd
ddll lddl ddll none
dlld none dldl ddll

Výstup:

2 1 4 4

Komentář: mapa obsahuje dva světlé cykly (délka nejdelšího je 4) a jeden tmavý cyklus délky 4.

Vstup:

lldd ddll ldld lddl ddll ldld ldld
lddl dldl ddll lldd dlld lddl ddll
dldl dldl dldl ddll lddl dldl dldl
dldl dlld lldd dlld lldd dlld lldd
lldd ddll lddl ddll lddl ddll ldld
lddl dlld lldd dlld lldd dlld ldld
lldd ddll ldld lddl ddll ldld ldld

Výstup:

4 2 10 4

Komentář: mapa obsahuje 4 světlé a 2 tmavé cykly. Délka nejdelšího světlého cyklu je 10, délka nejdelšího tmavého cyklu je 4.

Vstup:

ddll lldd dlld lddl
lldd ddll lddl dlld
lddl dlld lldd ddll
dlld lddl ddll lldd

Výstup:

1 1 4 12

Vstup:

lldd ddll lddl dldl dlld lldd dldl
ldld lldd dldl dldl ddll lddl dlld
lddl ddll lldd dlld lldd dlld ldld
dldl dlld ldld lddl ddll ldld lddl
dldl ddll lddl dldl dlld lddl dldl
dldl dlld lldd dlld lddl dlld lldd
dlld lddl ddll ldld lldd ddll lddl

Výstup:

2 0 8 0

Komentář: mapa obsahuje pouze 2 světlé cykly (délka nejdelšího je 8 políček). Mapa neobsahuje žádný tmavý cyklus.