Warning
This page is located in archive. Go to the latest version of this course pages. Go the latest version of this page.

Dilema III

Program

  • Řešení DU
  • Diskuze kódu hráče vezňova dilematu
  • Krátký programovací testík
  • Práce s 2D daty
  • Hádanka

Hádanka

(Ne tak úplně) Vězňovo dilema v praxi

Jak splnit zadání úlohy

Několik základních kontrolních bodů, kterých je rozumné se držet:

  • správně pojmenovat soubor
  • správně pojmenovat třídu a metody (pozor na malá a velká písmena)
  • správné parametry metody (self)!
  • výstup metody
  • správné odsazení
  • nepřepisovat vnitřní proměnné nebo funkce Pythonu

Programovací testík

Zadání testíku 2 v interní části stránek.

Programovací úlohy na cvičení

Programujte samostatně a ptejte se cvičícího. Snažte se o eleganci. Rozmyslete si trochu řešení předem, třeba na papír.

  • Vytvořte funkci na výpis dvourozměrného seznamu(listu) print_data(data):
    • funkce má jako parametr libovolně velký, dvourozměrný seznam
    • funkce by měla vypisovat seznam “čitelně” - tak aby bylo zřejmé v jakém je dané číslo řádku a sloupci
  • Vytvořte funkci generate_data(n_rows, n_cols), která vytvoří dvourozměrný seznam s n_rows řádky a n_cols sloupci s náhodným rozmístěním nul a jedniček, například pomocí funkce (randint)
    • otestujte funkci print_data(data) na vytvořeném seznamu

Pokud jste hotoví, začněte pracovat na programovací úloze z domácího úkolu.

Domácí úkol

Nadcházející neděli do 23:59:59 je třeba odevzdat PD hráče pro turnaj. specifikace

Programování

  • Pokuste se naprogramovat funkci line_size(r,c,data) která bude počítat velikost oblasti v řádku zaměřeném pozicí r, c. Oblastí je myšlena nepřerušovaná část 2d seznamu (v tomto případě řádku) se stejnou hodnotou v okolí zadané pozice, tedy stejnou hodnotou jako je v data[r][c]. Parametr data je dvourozměrný seznam nul a jedniček, r určuje řádek a c sloupec odkud se má velikost oblasti počítat. Hodnota oblasti(buď 0 nebo 1) je určena hodnotou data[r][c]. Návratovou hodnotou funkce je počet jedniček nebo nul v dané oblasti.
  • Rozmyslete jak by se dala funkce napsat tak, aby mohla případně počítat nejen v řádcích ale v obecném směru - (sloupcích, na diagonále).
  • Příklad:
    r=5
    c=5
    data = [
    [0, 1, 1, 1, 1, 0, 0, 0 ],
    [1, 1, 0, 1, 0, 1, 1, 1 ],
    [0, 1, 1, 0, 0, 1, 0, 1 ],
    [1, 1, 1, 0, 1, 1, 0, 1 ],
    [0, 1, 0, 0, 0, 0, 1, 1 ],
    [1, 0, 1, 1, 0, 0, 0, 0 ],
    [0, 1, 1, 1, 0, 1, 1, 1 ],
    [1, 1, 0, 1, 0, 1, 1, 1 ]]
    reg_size = line_size(r , c, data)
    print(reg_size)
    4
courses/b4b33rph/cviceni/program_po_tydnech/tyden_04.txt · Last modified: 2021/10/21 10:42 by xposik